Bonjour,
J'ai une question d'SQL. Je suis tombé sur un cas de figure similaire.
Voici un exemple très simplifié schéma relationnel
et je veux voir TOUTES les personnes avec la compagnie dans laquelle ils travaillent et l'adresse de la compagnie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 -------- --------- ------- |PERSONNE| |COMPAGNIE| |ADRESSE| |--------|0 1|---------|0 1|-------| | |--------| |--------| | | | | | | | -------- --------- -------
Le problème est que lorsque je fais cette requête ca m'affiche les personnes uniquement qui tarvaillentLorsque je regarde le plan d'exécution je vois que le moteur fais un double INNER JOIN.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT * FROM PERSONNE p LEFT JOIN COMPAGNIE c ON c.ID = p.C_ID INNER JOIN ADRESSE a ON a.ID = c.A_ID
Pourquoi?
En fait pour afficher ce que je veux je dois faire un double LEFT JOIN, mais alors, dans ce cas là, je risque de voir une personne avec sa compagnie et sans adresse.
Alors comment faire? Je dois absolument mettre une clause WHERE?
Partager