0
votes

faire un comparateur sur 2 requêtes pour trouver des différences

J'ai deux questions que j'essaie de comparer les uns avec les autres. Les deux requêtes renvoient le nombre de champs et de mêmes données. Ce que je cherche à faire, c'est être capable de trouver quelles lignes dans l'une ou l'autre des requêtes n'existent pas dans l'autre, donc comme exemple (ces requêtes sont très simplifiées, les deux requêtes ont plusieurs jointures)

Query1 xxx

q1 retourne xxx

requête 2 xxx

requête 2 retours 2 retours < / p> xxx

Je dois rejoindre ces requêtes sur les trois champs renvoyés à partir de chaque champ de requête1 = field4, fiel2 = field6, champ3 = field7 pour être sûr que seules les données qui ne sont pas avoir la correspondance exacte est renvoyée.

Mon résultat souhaité renvoie essentiellement toutes les lignes de Query1 qui n'ont pas de ligne correspondante dans la requête 2 et toutes les lignes de Query2 qui n'ont pas de ligne correspondante dans Query1.

résultat souhaité: xxx

donc ce que j'ai fait avec ce processus est j'ai créé deux expressions de table commun telles que ... et ensuite j'ai utilisé sauf , mais j'essaie de voir s'il y a une meilleure façon. xxx


2 commentaires

Utiliser sauf semble être le moyen le plus simple. Comment cette requête s'est-elle finie? A sauf b b b b sauf un devrait le faire.


sauf est construit à cet effet. Alors, quand vous dites "meilleur moyen", faites-vous des performances ou une élégance?


4 Réponses :


1
votes

Utilisez Union : xxx

joint externe complet sera également utile: xxx


0 commentaires

1
votes

Vous pouvez utiliser Associez complète - en supposant qu'aucune colonne n'est null : xxx

une autre méthode est union tout < / code>: xxx

Notez que cela comporte deux avantages par rapport à la méthode précédente:

  1. Il gère NULL valeurs dans les colonnes.
  2. Il gère des doublons - et valide le même nombre de doublons sont dans les deux tables.

0 commentaires

1
votes

Je jouais avec des données factices pour voir si vous pouviez obtenir ceci en utilisant 2 gauche rejoint . Voir si cela aide xxx

si vous souhaitez vraiment utiliser sauf , vous pouvez faire xxx


5 commentaires

Bonjour merci je vois ce que tu fais. Je pensais à faire quelque chose au long de ce que vous avez fait, avec ajouter le "manquant".


Si vous avez besoin de la colonne supplémentaire pour signaler le manquant, cet ou plusieurs autres jointures bases sont peut-être la voie à suivre


On dirait que je voudrais afficher le texte manquant. Mais j'ai l'impression que votre approche est très verbeuse. Y a-t-il un moyen de réaliser cela, sauf ou l'union? Je voudrais peut-être faire quelque chose comme Select Val1, Val2, Val3, "Miss '=" manquant dans Query2', puis faire sauf ou faire la même chose dans la requête 2, alors que seules les lignes renvoyées auraient les trois valeurs, et soit manquant dans le Questre2 ou manquant dans Query1


Quelque chose comme une union mais exclure la colonne manquante de chaque instruction SELECT si j'utilise l'approche dans mon commentaire précédent


@Koosh voir ma mise à jour. C'est aussi moins verbeux que je peux penser à



0
votes

Voici une approche qui fonctionne pour comparer les données de deux tables / vues / jeux de données xxx


0 commentaires