Ответ 1
select t.name, p1.name teacher_name, p2.name student_name
from t
left join people p1 on (t.teacher=p1.id)
left join people p2 on (t.student=p2.id)
У меня есть таблица вроде этого:
id (PK) name teacher (FK) student (FK)
1 Ron 3 6
Оба учителя и ученика находятся в другой таблице с именем people
.
people
id (PK) name age
3 Ali 42
6 Jon 12
Я хотел бы выполнить запрос, чтобы получить следующий
name teacher name student name
Ron Ali Jon
Возможно ли это? Я знаю, что могу выполнять два отдельных объединения, но потом я остаюсь с двумя строками, и нет указаний на то, какое имя является учителем и которое является учеником
select t.name, p1.name teacher_name, p2.name student_name
from t
left join people p1 on (t.teacher=p1.id)
left join people p2 on (t.student=p2.id)
Попробуйте следующее:
SELECT a.name, b.name 'teacher name', c.name 'student name'
FROM mainTablle a
LEFT JOIN people b ON a.teacher = b.id
LEFT JOIN people c ON a.student = c.id
WHERE a.id = 1;