Requête si champ null on prend un autre pour la jointure.
J'ai deux tables :
la table Cartes qui contient un id_personne
et la table personne qui contient entre autre cet id_personne. La relation peut donc ce faire par la.
Mon souci est que la table personne contient également un idParent qui peut-être null ou non.
Il faudrait que quand cet idParent n'est pas null, ce soit lui qui soit pris en compte pour la relation.
J'ai donc fait qq chose qui ressemble à ceci :
Code:
1 2 3 4 5 6 7
| SELECT p.Nom,p.Prenom,c.IdCarte
FROM CARTES c RIGHT OUTER JOIN Personnes p ON c.IdPersonne = p.id_Personne
WHERE p.IdParent IS NULL
UNION
SELECT p.Nom,p.Prenom,c.IdCarte
FROM CARTES c RIGHT OUTER JOIN Personnes p ON c.IdPersonne = p.idParent
WHERE p.IdParent IS NOT NULL |
Je ne sais pas si cette solution est la meilleure, qu'en pensez vous ? (J'avais pensé passer par une sous requête avec un Case ou un If, mais c'était assez lent malgré les index).