2016-03-15 2 views
0

Я не могу решить проблему, независимо от того, что я делаю.SQL Msg 209, уровень 16, состояние 1, строка 498 Неоднозначное название столбца 'SupplyCode'

Msg 209, Level 16, State 1, Line 498 Неоднозначное название столбца 'SupplyCode'.

--h. Выберите код поставок и описание поставок, которые никогда не использовались на работе. (2 балла)

select SupplyCode,Description, count(*) from JobSupply 

inner join Supply 
on Supply.SupplyCode = JobSupply.SupplyCode 

group by Supply.SupplyCode 

Msg 8120, Level 16, State 1, Line 498 Колонка 'Supply.Description' является недействительным в список выбора, потому что он не содержится ни в агрегатной функции, ни в предложении GROUP BY.

Это то, что я уже orignallay сделал выберите Supply.SupplyCode, описание, граф (Номер_задания) от поставки

внутреннего соединения JobSupply на Supply.SupplyCode = JobSupply.SupplyCode

группы по Supply.SupplyCode

имея Count (номер_задания) = 0

+0

вам необходимо предварить псевдоним или имя таблицы для 'SupplyCode':' ВЫБРАТЬ Supply.SupplyCode ..... ' – Lamak

+0

Я устал, но он отказывается запускать – Lost

+0

Что означает« отказывается работать »? – Lamak

ответ

1

Вы должны квалифицироваться SupplyCode в выбранных столбцах, как он не может неоднозначность от SupplyCode в Supply and SupplyCode в JobSupply. Попробуйте:

select S.SupplyCode,Description, count(*) from JobSupply 
inner join Supply S on S.SupplyCode = JobSupply.SupplyCode 
group by S.SupplyCode 
1

Поскольку столбец SupplyCode существует в обеих упомянутых таблицах вы должны квалифицировать имя в операторе отбора и указать, какие таблицы следует извлечь из.

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

select s.SupplyCode, Description, count(*) 
from JobSupply js 
join Supply s on s.SupplyCode = js.SupplyCode 
group by s.SupplyCode, description 

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

Возможно, вы захотите использовать левое соединение и отфильтровать недостающие строки, поскольку они должны быть теми, которые никогда не использовались , Или вы могли бы использовать связанный подзапрос с exists предиката:

Что-то вроде этого:

select SupplyCode, Description 
from Supply s 
where not exists (select 1 from jobsupply js where s.SupplyCode = js.SupplyCode) 
+0

Я думал, что это будет что-то вроде этого ... у меня все еще есть ошибка, но я думаю им ближе ... большое вам спасибо ... – Lost

+0

@Lost Возможно, ваш второй запрос мог бы работать, если вы измените тип соединения изнутри влево. – jpw

+0

Я пробовал, что .... его хорошо плохой пример, и посмотрим, поможет ли мне мой проф. ..... спасибо за вашу помощь, хотя – Lost

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