Requête SQL Server - renvoie la valeur null si aucune correspondance
Je suis confronté à un problème que je ne peux pas comprendre pourquoi. Je suis en train d'écrire une requête qui joint deux tables, dont un match ne peut pas être trouvé dans un tableau. Tels que:
SELECT
Table1.IDField, Table2.IDField
FROM
Table1
LEFT OUTER JOIN
Table2 ON Table1.PersonID = Table2.PersonID
WHERE
(Table1.IDField = '12345')
AND (Table2.Category = 'Foo')
Si il n'y a pas de correspondance dans la Table2
ce n'est pas de retourner quoi que ce soit. Cependant, j'ai besoin qu'il suffit de retourner la valeur NULL pour cette colonne si il n'y a pas de match et encore retourner la valeur de Table1
.
J'ai changé le JOIN
avec tout ce que je peux penser, mais en vain.
Table2.Category
peut contenir plusieurs autres valeurs, donc en faisant un OR IS NULL
type d'opération ne fonctionne pas.
Donc, si il ya pas de match pour Table2.Category = 'Foo'
je suis toujours dans le besoin de retour:
Table1 | Table2
----------------
12345 | NULL
Des suggestions?
source d'informationauteur BrewingDev
Vous devez vous connecter pour publier un commentaire.
Déplacer la condition pour
table2
de votreWHERE
clause et dans votreJOIN
.Essayez ceci:
puis supprimez le 'Foo' ligne de la clause where
Le problème n'est pas de la jointure en soi, mais dans l'exigence dans la clause where qui correspondent à la table2. J'ai résolu ce problème avec un où coalese(table2.catégorie, 'Foo') = 'Foo'. De cette façon, si la table2 est nulle, elle sera tout de même match.