2010-06-16 11 views
0

J'utilise subsonic 2.2 avec .net 2.0 et j'ai une erreur quand j'ai inclus "Group By".Subsonique. Nom de colonne ambigu utilisant Group By

A l'origine, j'ai eu ce code, et cela a fonctionné parfaitement:

SqlQuery etResourceTitle = new Select(ResTitleOngoing.Columns.ResourceTitleID, 
              ResTitleOngoing.Columns.ResourceTitle, 
              VenVendor.Columns.Title, 
              ResTitleOngoingStatus.Columns.Status).From(Tables.ResTitleOngoing); 

    etResourceTitle.InnerJoin(ResTitleOngoingStatus.ResourceTitleIDColumn, ResTitleOngoing.ResourceTitleIDColumn); 
    etResourceTitle.LeftOuterJoin(VenVendor.VendorIDColumn, ResTitleOngoing.VendorIDColumn); 

    etResourceTitle.OrderAsc(ResTitleOngoing.Columns.ResourceTitle); 

    etResourceTitle.ExecuteDataSet(); 

Puis j'ajouté "Grouper par", donc ceci est mon code:

SqlQuery etResourceTitle = new Select(Aggregate.GroupBy(ResTitleOngoing.Columns.ResourceTitleID), 
              Aggregate.GroupBy(ResTitleOngoing.Columns.ResourceTitle), 
              Aggregate.GroupBy(VenVendor.Columns.Title), 
              Aggregate.GroupBy(ResTitleOngoingStatus.Columns.Status)).From(Tables.ResTitleOngoing); 

    etResourceTitle.InnerJoin(ResTitleOngoingStatus.ResourceTitleIDColumn, ResTitleOngoing.ResourceTitleIDColumn); 
    etResourceTitle.LeftOuterJoin(VenVendor.VendorIDColumn, ResTitleOngoing.VendorIDColumn); 

    etResourceTitle.OrderAsc(ResTitleOngoing.Columns.ResourceTitle); 

    etResourceTitle.ExecuteDataSet(); 

Je suis l'erreur: « Ambigu nom de la colonne 'ResourceTitleID'. "

Exécution etResourceTitle.BuildSqlStatement(); je suis arrivé:

SELECT ResourceTitleID AS 'GroupByOfResourceTitleID', ResourceTitle AS 'GroupByOfResourceTitle', Titre AS 'GroupByOfTitle', Statut AS 'GroupByOfStatus' DE [dbo] [RES_TitleOngoing] INNER JOIN [dbo].. [RES_TitleOngoingStatus] ON [dbo]. [RES_TitleOngoing]. [ID_table_ressource] = [dbo]. [RES_TitleOngoingStatus]. [ID_table_ressource] GAUCHE OUTER JOIN [dbo]. [VEN_Vendor] ON [dbo]. [RES_TitleOngoing]. [VendorID] = [dbo]. [VEN_Vendor]. [VendorID] GROUP BY ResourceTitleID, ResourceTitle, Titre, Statut ORDER BY ResourceTitle ASC

Donc, quelqu'un peut m'aider avec cette erreur.

Merci Alan

Répondre

1

Les deux tables RES_TitleOngoing et RES_TitleOngoingStatus contiennent une colonne nommée ResourceTitleID mais vous avez spécifié juste ResourceTitleID dans votre groupe par une partie de sorte que le serveur SQL ne sait pas quel ResourceTitleID vous voulez groupe.

Note:

ResTitleOngoing.Columns.ResourceTitleID 

juste retourne une chaîne "ResourceTitleID"

Vous devriez essayer un de ces à la place:

Aggregate.GroupBy(ResTitleOngoing.ResourceTitleIDColumn) 
Aggregate.GroupBy(ResTitleOngoing.Schema.QualifiedName + "." 
        + ResTitleOngoing.Columns.ResourceTitleID) 
+0

Merci Schlawiener. Cela a résolu mon problème. J'ai utilisé Aggregate.GroupBy (ResTitleOngoing.ResourceTitleIDColumn) Alan – ARR01