Как объединить 3 таблицы, если одна не главная - PullRequest
1 голос
/ 18 января 2012

Я хочу использовать объединение для некоторых таблиц, но у меня возникают трудности с поиском решения.

Возьмите этот SQL (урезанный):

SELECT
*
FROM project_contacts c
LEFT JOIN projects p ON c.project=p.ID
LEFT JOIN project_contact_type ON people.project_contact_type=project_contact_type.ID
LEFT JOIN people ON c.person=people.ID
WHERE p.live = 1
ORDER by p.code
LIMIT 4;

возвращает ошибку:

Неизвестный столбец 'people.project_contact_type' в 'on предложении'

Из строки: ВЛЕВО СОЕДИНИТЬ.project_contact_type 'определяется на основе таблицы' people ', а не таблицы' project_contacts ', в которой отключены другие объединения, если это имеет смысл ??

Так что я не знаю, каксделай соединение внутри другого соединения, если это даже то, что я пытаюсь сделать;) ...

Ответы [ 2 ]

3 голосов
/ 18 января 2012

Порядок объединений имеет значение: система не знает людей, поэтому она должна быть второй в вашем списке.

SELECT
*
FROM project_contacts c
LEFT JOIN projects p 
  ON c.project=p.ID
LEFT JOIN people 
 ON c.person=people.ID
LEFT JOIN project_contact_type 
  ON people.project_contact_type=project_contact_type.ID
WHERE p.live = 1
ORDER by p.code
LIMIT 4;
0 голосов
/ 18 января 2012

Попробуйте это:

SELECT *
FROM project_contacts c
LEFT JOIN projects p ON c.project=p.ID
LEFT JOIN people ON c.person=people.ID
LEFT JOIN project_contact_type ON people.project_contact_type=project_contact_type.ID
WHERE p.live = 1
ORDER by p.code
LIMIT 4;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...