2010-10-24 3 views
1

У меня есть две таблицы:MySQL - три присоединяется на одном столе

persons 
- person_id 
- fullname 

students 
- student_id 
_ person_id 
- father_id 
- mother_id 

В таблице студентов последних трех столбцах магазина идентификаторами из таблицы лиц. Что ВЫБРАТЬ может получить следующие данные:

- student name 
- father name 
- mother name 

Мы не берем на себя WHERE, ORDER BY или LIMIT для простоты

ответ

4

попробовать это:

select sp.fullname studentname, fp.fullname fathername, mp.fullname mothername 
    from students s 
inner join persons sp on (s.student_id = sp.person_id) 
inner join persons fp on (s.father_id = fp.person_id) 
inner join persons mp on (s.mother_id = mp.person_id) 
+0

Спасибо. Опционально ли 'AS'? –

+0

Это действительно необязательно. –

1

Попробуйте ниже запрос -

SELECT p.fullname,m.fullname,f.fullname from students s 
    LEFT JOIN persons p ON s.person_id = p.id 
    LEFT JOIN mother m ON s.mother_id = m.id 
    LEFT JOIN father f ON s.father_id = f.id 
    WHERE s.student_id = 'id of which student record you want'; 
+0

Спасибо, но так, не так ли, чтобы все поля в возвращаемом наборе записей назывались 'fullname'? –

+0

yes .... так что вам придется использовать псевдоним, как pablo, используемый выше. :) – Alpesh

Смежные вопросы