2010-10-24 8 views
1

J'ai deux tables:mysql - trois jointures sur la même table

persons 
- person_id 
- fullname 

students 
- student_id 
_ person_id 
- father_id 
- mother_id 

Dans le tableau des étudiants les trois dernières colonnes ids de magasin de table personnes. Qu'est-ce que SELECT peut récupérer les données suivantes:

- student name 
- father name 
- mother name 

Nous partons du principe pas WHERE, ORDER BY ou LIMIT pour simplifier

Répondre

4

essayez ceci:

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

Merci. Est-ce que 'AS' est optionnel? –

+0

C'est optionnel en effet. –

1

Essayez ci-dessous requête -

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

Merci, mais de cette façon, ne serait-il pas que tous les champs du jeu d'enregistrements renvoyé soient nommés 'fullname'? –

+0

oui .... donc vous devrez utiliser alias comme pablo utilisé ci-dessus. :) – Alpesh

Questions connexes