Проблема SQL-запроса - PullRequest
       1

Проблема SQL-запроса

1 голос
/ 28 июля 2011

Я пытаюсь выбрать одну из двух таблиц, используя соединение, а затем группирование по типу.Как мне избежать «активного»?

Выдает эту ошибку в окне запросов (студия управления):

Ошибка

Msg 209, Level 16, State 1, Line 6 
Ambiguous column name 'active'. 
Msg 207, Level 16, State 1, Line 7 
Invalid column name 'zone'.

Запрос

select 
vendor.name,type_zone.type as zone
from dbo.vendor join dbo.type_zone
on fkType_zoneID = pkType_ZoneID 
where active = 1
GROUP BY zone

Ответы [ 4 ]

1 голос
/ 28 июля 2011

Столбец active отображается в обеих таблицах. Вам необходимо определить, какой active столбец вы хотите использовать. Например

WHERE vendor.active = 1

Нельзя использовать псевдоним столбца в предложении GROUP BY. Изменить zone на type_zone.type

1 голос
/ 28 июля 2011

Квалифицируйте активный столбец с именем таблицы:

vendor.active или type_zone.active

(Я не уверен, к какой из этих таблиц относится активный столбец. Вот почему сервервыдает ошибку, она тоже не может сказать.)

1 голос
/ 28 июля 2011

Ваши ошибки означают, что «активное» имя столбца существует в обеих таблицах.Вам нужно указать его как type_zone.active или vendor.active в ваших тестах, чтобы определить, в какой таблице должен быть проверен столбец с таким именем.

Ваше предложение GROUP BY содержит ошибки, поскольку в вас нет функции агрегированияваше SELECT предложение.

0 голосов
/ 28 июля 2011

Зависит от того, в какой таблице активен актив. Если он в поставщике, то должно работать следующее:

select 
vendor.name,type_zone.type as zone
from dbo.vendor inner join dbo.type_zone
on fkType_zoneID = pkType_ZoneID 
where dbo.vendor.active = 1
GROUP BY type_zone.type

С этим легче справиться, если использовать псевдонимы таблиц, как показано ниже:

select 
v.name,t.type as zone
from dbo.vendor v inner join dbo.type_zone t
on v.fkType_zoneID = t.pkType_ZoneID 
where v.active = 1
GROUP BY t.type
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...