2 tabellen vergleichen

ich möchte zwei tabellen z.b. tabelle und tabelle_temp, die die gleiche struktur haben vergleichen.
falls sie sich unterscheiden den unterschiedkuíche datensätze anzeiegn

reicht mir diese abfrage?

select *
from tabelle
except
select *
from tabelle_temp

Hallo,

reicht mir diese abfrage?

das hängt davon ab, was du wirklich willst. So wie gezeigt merkst du z.B. nicht, wenn in tabelle_temp Sätze existieren, die es in tabelle nicht gibt.

Andreas

Hallo,

kommt drauf an, ob du das öfter benötigst oder nicht.
Sonst würde ich pauchal die beiden tabellen mittels LEFT und RIGHT JOIN verbinden. Damit sieht man auch die Unterschiede.
Da wo nichts ist, kommt null raus

Gruß
Proteus

.

Hallo,

das ist die beste Antwort seit langem.
Kurz und knapp.

Wobei FULL OUTER JOIN, aufpassen, welche Datenbankversion. Wird nicht in allen Versionen unterstützt.

Gruß
Proteus

Hi!

das ist die beste Antwort seit langem.
Kurz und knapp.

Ein bißchen Recherche und Erfahrungen sammeln muß man dem UP auch noch lassen :wink:

Wobei FULL OUTER JOIN, aufpassen, welche Datenbankversion.
Wird nicht in allen Versionen unterstützt.

Da kommt dann Dein Links-Rechts-Join zur Geltung; das sollte (beinahe) überall funktionieren.

Grüße,
Tomh

Hallo,
es liegt ja hier schon an der ungenauen Fragestellung.

Wenn wirklich aufgedeckt werden soll, was an Sätzen in einer Tabelle vorhanden ist während es in der anderen nicht vorhanden ist UND umgekehrt, dann ist das nix für left und right (btw. es ist doch immer entweder left ODER right), sondern der FULL OUTER JOIN bringt es ans Licht. Das ist auch einer der seltenen Momente, wo der FULL OUTER JOIN überhaupt mal benötigt wird.

Normalerweise wird hier dann mittels matching von Keyspalten das Bilden von Paaren durchgeführt.
Nun können ja auch noch 2 Sätze über den Key matchen und in den anderen Spalten trotzdem noch unterschiedlich sein, so dass in der join clause eigentlich alle Spalten aufgeführt werden müssen.

Aber ich „plapper“ mich gerade auf Touren, ich hör jetzt mal besser auf…
[:o)]
Fred