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.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Table Personne
id_personne PK
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
4
5
 
Table Client
id_client PK
id_personne FK (ref table personne)
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 Serveur
id_serveur 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.

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:

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);
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.
Pouvez vous me dire s'il faille faire un OUTER JOIN quelque chose comme ça.

Je vous remercie par avance,