yo,
- Ich möchte alle Einträge von Tabelle B haben, bei denen number und serial auch in Tabelle A existieren.
ich habe in den beiträgen mit dedlfix nicht alles gelesen, aber du hast einen falschen ansatz. joins sind in diesem fall der falsche weg. du willst ja nicht beide tabllen miteinander verknüpfen, sondern du willst nur datensätze der tabelle b in der ergebnismenge haben. und dazu sind joins in aller regel ungeeignet. sie können zwar zum gleichen ergebnis führen, das ist aber abhängig von den werten in den beiden tabellen. besser wäre hier der einsatz von sogenannten korrelierten unterabfragen mit der pürfung auf EXIST.
SELECT b.number, b.serial, b.value, b.date
FROM TabelleB b
WHERE DATE(b.date ) = '2009-11-19'
AND EXISTS (SELECT NULL
FROM TabelleA a
WHERE a.serial = b.serial
AND a.number = b.number
)
;
- Ich möchte alle Einträge von Tabelle B haben, bei denen number und serial in Tabelle A NICHT existieren.
die zweite abfrage ist dann schon fast selbsterklärend, wenn man die erste hat.
SELECT b.number, b.serial, b.value, b.date
FROM TabelleB b
WHERE DATE(b.date ) = '2009-11-19'
AND NOT EXISTS (SELECT NULL
FROM TabelleA a
WHERE a.serial = b.serial
AND a.number = b.number
)
;
Ilja