SQL - как выбрать несколько таблиц и присоединиться к нескольким строкам из одного столбца? - PullRequest
1 голос
/ 11 ноября 2011

Как выбрать несколько таблиц и присоединиться к нескольким строкам из одного столбца?

Не возвращает painting.id_group, painting.id_type и painting.id_location. Я уверен, что этот фрагмент кода SQL имеет неправильный синтаксис.

SELECT painting.id, painting.order, painting_en.url, id_portfolio.en
FROM painting
LEFT JOIN painting_en
USING ( id ) 
LEFT JOIN id_portfolio ON id_portfolio.id = painting.id_group
AND id_portfolio.id = painting.id_type
AND id_portfolio.id = painting.id_location
WHERE painting_en.url='2011-name3'
LIMIT 1

Обновление: Это показывает Showing rows 0 - 0 ( 1 total, Query took 0.0004 sec). После удаления

AND id_portfolio.id = painting.id_type
AND id_portfolio.id = painting.id_location

возвращает:

id        | order | url        |en
----------+-------+------------+-----
09518709  | 4     | 2011-name3 | NULL

но мне нужно вернуться:

id        | order | url        | group   | type          | location
----------+-------+------------+---------+---------------+---------
09518709  | 4     | 2011-name3 | realism | oil on canvas | US

1 Ответ

1 голос
/ 11 ноября 2011

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

SELECT painting.id, 
       painting.order, 
       painting_en.url, 
       `group`.en AS `group`, 
       TYPE.en AS type, 
       location.en AS location
FROM   painting 
       LEFT JOIN painting_en 
       USING (id) 
       LEFT JOIN id_portfolio `group` 
         ON `group`.id = painting.id_group 
       LEFT JOIN id_portfolio TYPE 
         ON TYPE.id = painting.id_type 
       LEFT JOIN id_portfolio location 
         ON location.id = painting.id_location 
WHERE  painting_en.url = '2011-name3' 
LIMIT  1 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...