2010-06-16 3 views
0

Я использую дозвуковое 2.2 с .net 2.0, и у меня возникла ошибка, когда я включил «Группировать по».Дозвуковой. Неоднозначное название столбца, использующее группу.

Изначально у меня был этот код, и он работал отлично:

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(); 

Затем я добавил "Group By", так что это мой код:

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(); 

я получил ошибку: «Неоднозначность имя столбца 'ResourceTitleID'. "

Выполнение etResourceTitle.BuildSqlStatement(); я получил:

SELECT ResourceTitleID AS 'GroupByOfResourceTitleID', ResourceTitle AS 'GroupByOfResourceTitle', Название AS 'GroupByOfTitle', Статус AS 'GroupByOfStatus' FROM [DBO] [RES_TitleOngoing] INNER JOIN [DBO].. [RES_TitleOngoingStatus] ON [dbo]. [RES_TitleOngoing]. [ResourceTitleID] = [dbo]. [RES_TitleOngoingStatus]. [ResourceTitleID] LEFT OUTER JOIN [dbo]. [VEN_Vendor] ON [dbo]. [RES_TitleOngoing]. [VendorID] = [dbo]. [VEN_Vendor]. [VendorID] GROUP BY ResourceTitleID, ResourceTitle, Title, Status ORDER BY ResourceTitle ASC

Итак, кто-то может помочь мне с этой ошибкой.

Благодаря Alan

ответ

1

Обе ваши таблицы RES_TitleOngoing и RES_TitleOngoingStatus содержат столбец с именем ResourceTitleID но вы указали только ResourceTitleID в вашей группе по частям, так что сервер SQL не знает, какие ResourceTitleID вы хотите сгруппировать.

Примечание:

ResTitleOngoing.Columns.ResourceTitleID 

просто возвращает строку "ResourceTitleID"

Вы должны попробовать один из них вместо:

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

Спасибо SchlaWiener. Это решило мою проблему. Я использовал Aggregate.GroupBy (ResTitleOngoing.ResourceTitleIDColumn) Alan – ARR01

Смежные вопросы