Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Можете пожалуйста помочь  [new]
toxli
Member

Откуда:
Сообщений: 8
У меня есть 3 таблицы. Первая таблица содержит имена, к примеру, девушек. Вторая - имена обуви. В первой и второй есть первичные ключи. В третьей таблице создается составной ключ из двух столбцов, где в первом столбце берётся значение первичного ключа из первой таблицы и сопоставляется с другим столбцом у которого значения берутся из первичного ключа второй таблицы. То есть, каждой девушке сопоставляется определенная обувь. Вот у меня не получается соединить эти таблицы через код:

SELECT g.name, b.boots
FROM Girls g 
INNER JOIN  Boots b 
INNER JOIN Moda m  
ON g.id = m.id_girls 
AND b.id = m.id_boots ;



Пишет: "Неправильный синтаксис около конструкции ";"."
8 апр 14, 14:04    [15849452]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
Glory
Member

Откуда:
Сообщений: 104751
А к какому из INNER JOIN относится ваш единственный ON ?
8 апр 14, 14:06    [15849466]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
toxli
Member

Откуда:
Сообщений: 8
а их два должно быть?
8 апр 14, 14:08    [15849474]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
Glory
Member

Откуда:
Сообщений: 104751
toxli
а их два должно быть?

Конечно. Как иначе каждый JOIN поймет как и что именно ему соединять ?
8 апр 14, 14:11    [15849498]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
toxli
Member

Откуда:
Сообщений: 8
Все равно ошибка вылетает:"Не удалось привязать составной идентификатор "g.id"."


SELECT g.name, b.boots
FROM Girls g 
INNER JOIN  Boots b 
INNER JOIN Moda m  
ON g.id = m.id_girls 
ON b.id = m.id_boots ;
8 апр 14, 14:27    [15849599]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
Glory
Member

Откуда:
Сообщений: 104751
toxli
Все равно ошибка вылетает:"Не удалось привязать составной идентификатор "g.id"."

Потому кострукция JOIN ... ON ... она как-бы "монолитна". Еее нельзя прото так "разбросать" по тексту всего запроса
8 апр 14, 14:29    [15849609]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
toxli
Member

Откуда:
Сообщений: 8
Спасибо огромное, я понял....))) получилось)
8 апр 14, 14:31    [15849623]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
iap
Member

Откуда: Москва
Сообщений: 47142
Glory
Потому кострукция JOIN ... ON ... она как-бы "монолитна". Еее нельзя прото так "разбросать" по тексту всего запроса
Почему же? Можно:
SELECT g.name, b.boots
FROM Girls g 
JOIN
  Boots b JOIN Moda m ON b.id = m.id_boots
ON g.id = m.id_girls;
Этакие вложенные друг в друга JOINы.
Главное, чтобы внутренний JOIN заканчивался раньше внешнего.
Cмысл ошибки - во внутреннем JOINе неизвестно имя таблицы из внешнего "незавершённого" (в данном месте кода) JOINа
8 апр 14, 14:44    [15849722]     Ответить | Цитировать Сообщить модератору
 Re: Можете пожалуйста помочь  [new]
Glory
Member

Откуда:
Сообщений: 104751
iap
Почему же? Можно:

"нельзя просто так" а не нельзя вообще
8 апр 14, 14:45    [15849735]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить