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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
 --------          ---------          -------
|PERSONNE|        |COMPAGNIE|        |ADRESSE|
|--------|0      1|---------|0      1|-------|
|        |--------|         |--------|       |
|        |        |         |        |       |
 --------          ---------          -------
et je veux voir TOUTES les personnes avec la compagnie dans laquelle ils travaillent et l'adresse de la compagnie.

Le problème est que lorsque je fais cette requête ca m'affiche les personnes uniquement qui tarvaillent
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
Lorsque je regarde le plan d'exécution je vois que le moteur fais un double INNER JOIN.
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?