Je suis en train de comparer deux tableaux, SQL Server, afin de vérifier certaines données. Je veux retourner toutes les lignes des deux tables où les données sont soit dans l'un ou l'autre. En essence, j'en veux pour preuve toutes les divergences. J'ai besoin de vérifier trois morceaux de données en procédant de la sorte, FirstName, LastName et le Produit.
Je suis assez nouveau à SQL et il semble que beaucoup de solutions, je suis la recherche sont plus de compliquer les choses. Je n'ai pas à vous soucier de valeurs Null.
J'ai commencé par essayer quelque chose comme ceci:
SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name]
FROM [Real Data]))
Je vais avoir du mal à prendre ce plus loin cependant.
Merci!
EDIT:
Basé sur la réponse de @treaschf j'ai essayé d'utiliser une variante de la requête suivante:
SELECT td.[First Name], td.[Last Name], td.[Product Name]
FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d
ON td.[First Name] = d.[First Name] AND td.[Last Name] = d.[Last Name]
WHERE (d.[First Name] = NULL) AND (d.[Last Name] = NULL)
Mais je continue à recevoir 0 résultats arrière, quand je sais qu'il y a au moins 1 ligne de td qui n'est pas dans d.
EDIT:
Ok, je pense que j'ai tout compris. Au moins dans mes quelques minutes de test, il semble fonctionner assez bien.
SELECT [First Name], [Last Name]
FROM [Temp Test Data] AS td
WHERE (NOT EXISTS
(SELECT [First Name], [Last Name]
FROM [Data] AS d
WHERE ([First Name] = td.[First Name]) OR ([Last Name] = td.[Last Name])))
C'est fondamentalement va me dire ce qui est dans mes données de test c'est pas dans mes données réelles. Ce qui est tout à fait acceptable pour ce que je dois faire.