Abfrage nicht vorhandene DS in zwei Tabellen

Hallo zusammen,
ich habe ein Problem zu dem ich auf keine Lösung komme.

Ich habe 2 Tabellen: Tabelle A und Tabelle B
In beiden Tabellen gibt es die Felder: 1, 2, 3 und 4

Beispiel:
Tabelle 1:
1: test1 1: test2
2: test2 2: test1
3: test3 3: test4
4: test4 4: test3

Tabelle 2:
1: test1 1: test1
2: test2 2: test3
3: test3 3: test4
4: test4 4: test2

Ich möchte jetzt gerne eine Abfrage durchführen, das als Ergebnis die Datensätze aus Tabelle 2 bringt, zu denen es keine identischen Datensätze in Tabelle 1 gibt.

Hier zum Beispiel der 2. DS aus Tabelle 1. Dieser Datensatz ist in Tabelle 2 nicht vorhanden.

Hoffe ihr versteht was ich gerne möchte und hoffe mit kann jemand einen Tipp geben. Wäre super dankbar dafür.

Bis dahin, viele Grüsse.
Andi

Auch hallo.

So auf die Schnelle (und ungetestet) kann man Joins arbeiten: left, right oder inner join.
Oder dem Union Operator. Wobei man die Abfrage auch mit NOT IN kombinieren kann.

mfg M.L.

Hi Andi,
ich sehe nur einen einzigen Datensatz der übereinstimmt - ist in beiden Tabellen die Nr. 3.

Die nicht übereinstimmenden könntest du so raus bekommen:

SELECT t1.feld1, t1.feld2
FROM t1 LEFT JOIN t2 ON (t1.feld2 = t2.feld2) AND (t1.feld1 = t2.feld1)
WHERE (t2.feld1 Is Null) AND (t2.feld2 Is Null)
union all
SELECT t2.feld1, t2.feld2
FROM t2 LEFT JOIN t1 ON (t2.feld2 = t1.feld2) AND (t2.feld1 = t1.feld1)
WHERE (t1.feld1 Is Null) AND (t1.feld2) Is Null)

Gruß EPa

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi Andi,
ich sehe nur einen einzigen Datensatz der übereinstimmt - ist
in beiden Tabellen die Nr. 3.

Die nicht übereinstimmenden könntest du so raus bekommen:

SELECT t1.feld1, t1.feld2
FROM t1 LEFT JOIN t2 ON (t1.feld2 = t2.feld2) AND (t1.feld1 =
t2.feld1)
WHERE (t2.feld1 Is Null) AND (t2.feld2 Is Null)
union all
SELECT t2.feld1, t2.feld2
FROM t2 LEFT JOIN t1 ON (t2.feld2 = t1.feld2) AND (t2.feld1 =
t1.feld1)
WHERE (t1.feld1 Is Null) AND (t1.feld2) Is Null)

Gruß EPa

Hallo,
hat so super funktioniert!
Vielen Dank. Wäre von alleine auf diese Abfrage nicht gekommen!
Vielen Dank nochmal.

Schönen Abend an alle noch.

Hallo zusammen,

war wohl doch leider ein wenig zu voreilig vorhin. Gerade bei der Arbeit ist mir aufgefallen, dass doch sehr sehr viele Datensätze dabei sind, die in beiden Tabellen vorhanden sind! Wollte ja eigentlich nur DS die in der einen aber nicht in der anderen vorhanden sind.
Leider zu bald gefreut. Aber vielleicht hat ja doch noch jemand eine Lösung für mich?

Die Abfrage ist trotzdem mal anbei.

(SELECT behaelterbewegungen.kontoname, behaelterbewegungen.typ, behaelterbewegungen.werkskuerzel,
behaelterbewegungen.standort
FROM behaelterbewegungen LEFT JOIN behaelterzuordnung
ON (behaelterbewegungen.kontoname = behaelterzuordnung.kontoname)
AND (behaelterbewegungen.typ = behaelterzuordnung.typ)
AND (behaelterbewegungen.werkskuerzel = behaelterzuordnung.werkskuerzel)
AND (behaelterbewegungen.standort = behaelterzuordnung.standort)
WHERE (behaelterzuordnung.typ Is Null) AND (behaelterzuordnung.kontoname Is Null)
AND (behaelterzuordnung.werkskuerzel Is Null) AND (behaelterzuordnung.standort Is Null))
union all
(SELECT behaelterzuordnung.kontoname, behaelterzuordnung.typ,
behaelterzuordnung.werkskuerzel, behaelterzuordnung.standort
FROM behaelterzuordnung LEFT JOIN behaelterbewegungen
ON (behaelterzuordnung.typ = behaelterbewegungen.typ )
AND(behaelterzuordnung.kontoname = behaelterbewegungen.kontoname)
AND(behaelterzuordnung.werkskuerzel = behaelterbewegungen.werkskuerzel)
AND(behaelterzuordnung.standort = behaelterbewegungen.standort)
WHERE (behaelterbewegungen.kontoname Is Null) AND (behaelterbewegungen.typ Is Null)
AND (behaelterbewegungen.werkskuerzel Is Null) AND (behaelterbewegungen.standort Is Null))
ORDER BY kontoname, typ, werkskuerzel

Trotzdem schon mal Danke im vorraus für Vorschläge.
Andi