JOIN запрос, на тот же ключ - PullRequest
       0

JOIN запрос, на тот же ключ

0 голосов
/ 21 августа 2011

У меня есть несколько таблиц. Наиболее важными в этом запросе JOIN являются:

table 'changes' columns:<br> |----|------------|----------|------------|-----|----------------|<br> | id | teacher_id | class_id | subject_id | day | new_teacher_id |<br> |----|------------|----------|------------|-----|----------------|<br> |----|--sample input:--------|------------|-----|----------------|<br> |---1|-----------1|---------1|-----------1|2002-02-02|----------2|

table 'teachers' columns:<br> |----|---------|<br> | id | teacher |<br> |----|---------|<br> |sample input:-|<br> |---1|mr. Johnson|<br> |---2|mr. John-|<br> |--------------|

Запрос ниже работает нормально:

SELECT c.day, t.teacher, cl.class, s.subjectname<br> FROM changes AS c<br> LEFT JOIN teachers AS t ON c.teacher_id = t.id<br> JOIN classes AS cl ON c.class_id = cl.id<br> JOIN subjects AS s ON c.subject_id = s.id

Но я также хочу сделать что-то вроде:

LEFT JOIN teachers AS t ON c.teacher_id = t.id AND c.new_teacher_id = t.id

То, что не работает.

Есть идеи, как соединить два столбца из одной таблицы с одним ключевым столбцом из другого?

Ответы [ 2 ]

3 голосов
/ 21 августа 2011

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

SELECT t2a.name AS one_name, t2b.name AS two_name, ...
FROM table1 AS t1 JOIN table2 AS t2a (ON t2a.id = t1.one_id)
                  JOIN table2 AS t2b (ON t2b.id = t1.two_id)
1 голос
/ 21 августа 2011

Поместите это в предложение WHERE:

SELECT c.day, t.teacher, cl.class, s.subjectname
FROM changes AS c
LEFT JOIN teachers AS t ON c.teacher_id = t.id
JOIN classes AS cl ON c.class_id = cl.id
JOIN subjects AS s ON c.subject_id = s.id
WHERE c.new_teacher_id = t.id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...