Bonjour,
On suppose que j'ai une DB Restaurant et trois tables Client, Serveur et Personne.
La table Personne possède une clé primaire id_personne, un nom.
La table Client possède une clé primaire id_client mais aussi une clé étrangère id_personne qui référence la table Personne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4Table Personne id_personne PK nom
Pareil pour Serveur, la table Serveur possède une clé primaire id_serveur et une clé étrangère id_personne qui référence Personne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Table Client id_client PK id_personne FK (ref table personne) nom
Entre Client et Personne, on a une relation One To Many de Client à Personne et entre Serveur et Personne, on a une relation One To Many également de Serveur à Personne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Table Serveur id_serveur PK id_personne FK (ref table Personne) nom
Comment je peux faire pour faire une SELECT qui va contenir à la fois un id_personne pour le client et un id_personne et optionnellement un id_client et un id_serveur.
Si je fais quelque chose dans ce genre:
Mais du coup, si je fais ça, ce n'est pas bon car j'ai une intersection. ça doit être basique mais je ne vois pas trop.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT s.id_personne AS personne_serveur, c.id_personne AS personne_client FROM Personne pe INNER JOIN Cient c USING(id_personne) INNER JOIN Serveur s USING(id_personne);
Pouvez vous me dire s'il faille faire un OUTER JOIN quelque chose comme ça.
Je vous remercie par avance,
Partager