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 P > q1 retourne p> requête 2 p> requête 2 retours 2 retours < / p> 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. p> 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. p> résultat souhaité: p> 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. p>
4 Réponses :
Utilisez Union code>:
joint externe complet code> sera également utile: p>
Vous pouvez utiliser une autre méthode est Notez que cela comporte deux avantages par rapport à la méthode précédente: p> Associez complète code> - en supposant qu'aucune colonne n'est
null code>:
union tout < / code>: p>
NULL code> valeurs dans les colonnes. LI>
Je jouais avec des données factices pour voir si vous pouviez obtenir ceci en utilisant 2 si vous souhaitez vraiment utiliser gauche rejoint code>. Voir si cela aide
sauf code>, vous pouvez faire p>
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 code> 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 à
Voici une approche qui fonctionne pour comparer les données de deux tables / vues / jeux de données
Utiliser
sauf code> 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 code> est construit à cet effet. Alors, quand vous dites "meilleur moyen", faites-vous des performances ou une élégance?