Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / получаю сообщение об ошибке. помогите разобраться. / 5 сообщений из 5, страница 1 из 1
17.07.2019, 22:50
    #39838498
Leon4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получаю сообщение об ошибке. помогите разобраться.
Всем привет.
Помогите найти ошибку.

Условие таково:

Из таблицы "products" выбрать наименования продуктов относящихся к категории "Seafood", но и при условии, что регион поставщика (Region) не известен.

Запрос который написал я, выглядит следующим образом:

select P.ProductName
from Products P
join Categories C
on C.CategoryID = P.CategoryID
where C.CategoryName = 'Seafood'
join Suppliers S
on S.SupplierID = P.SupplierID
where S.Region IS NULL

Сообщение об ошибке звучит так:

Msg 156, Level 15, State 1, Line 6
Incorrect syntax near the keyword 'join'.
...
Рейтинг: 0 / 0
17.07.2019, 23:12
    #39838504
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получаю сообщение об ошибке. помогите разобраться.
Leon4ik,

Сервер не может понять к чему относятся ваши where clause.
Условия для join пишутся в другом формате, без where.
В одном предложении может быть только одно where clause.
Почему у вас условия where C.CategoryName = 'Seafood' и where S.Region IS NULL отдельно?
...
Рейтинг: 0 / 0
17.07.2019, 23:32
    #39838512
Leon4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получаю сообщение об ошибке. помогите разобраться.
PizzaPizza,
Так как при поставленном условии я вынужден использовать данные из трех таблиц, а регион поставщика находится в таблице ("Suppliers"), которую мне нужно присоединить к предыдущим таблицам и уж тогда указать дополнительное условие.

возможно я заблуждаюсь, так как я пока обучаюсь.

Вы могли бы внести в коррективы в запросе?
...
Рейтинг: 0 / 0
17.07.2019, 23:58
    #39838520
Leon4ik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получаю сообщение об ошибке. помогите разобраться.
PizzaPizza,

Спасибо, вы оказались правы.
Немного изменил запрос и всё заработало.

А вот и исправленный запрос:

select P.ProductName
from Products P
join Categories C
on C.CategoryID = P.CategoryID
join Suppliers S
on S.SupplierID = P.SupplierID
where C.CategoryName = 'Seafood' and S.Region IS NULL
...
Рейтинг: 0 / 0
18.07.2019, 02:09
    #39838526
PizzaPizza
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
получаю сообщение об ошибке. помогите разобраться.
Leon4ik,

Ага
Вы просите сервер применить условие where к выборке, которая представляет собой объединение таблиц по условию объединения .

Вы могли бы написать условие объединения ограничив вторую таблицу вашим условием S.Region IS NULL , но тогда в условии объединения это пишется в секции ON вроде этого
ON S.SupplierID = P.SupplierID AND S.Region IS NULL

Но не забывайте про декларативность языка - вы просите сервер сделать так, а физическое выполнение это другая история. Соответственно и разница вариантов в вашем случае будет только в тексте запроса, а не в его исполнении на сервере.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / получаю сообщение об ошибке. помогите разобраться. / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]