Hallo Markus!
Der Besserwisser ist mal wieder unterwegs und fragt sich:
Warum so kompliziert? Wenn ich nicht irgendwas übersehe geht
doch auch:
SELECT KeyNr,Fabe,BestNr,Datum
FROM Bestellungen
WHERE BestNr NOT IN
(
SELECT BestNr
FROM Bestellungen
WHERE Fabe ! =‚BLAU‘
)
ORDER BY BestNr
Wenn Fabe auch NULLs enthalten kann, dann eben (falls
gewünscht) noch Erweiterung um „OR Fabe IS NULL“. Ich blind
oder Du umständlich?
Nach meinem Verständnis Repräsentiert eine Zeile der Tabelle jeweils eine Bestellposition, Zeilen mit gleicher Bestellnummer gehören zu einer Bestellung.
1|Blau|0815|1.1.2000
2|Gruen|0815|1.1.2000
3|Gelb|0815|1.1.2000
4|Blau|1234|5.1.2001
5|Gelb|1234|5.1.2001
Meine Vorgehensweise war daher im Subselect erst alle Bestellungen zu ermitteln, die eine Position Fabe=‚BLAU‘ enthalten, um diese dann im zweiten Schritt vom Endergebnis ausklammern zu können.
Durch deine Änderung blendest du lediglich einzelne Bestellpositionen aus, d.h. bezogen auf die Daten (s.o.) hat die Bestellung =‚1234‘ zwei Positionen, dein SQL liefert aber nur die Position FABE=‚GELB‘. Zum einen gibst du damit nur eine zerstückelte Bestellung zurück, denn zu dieser Bestellung gehört ja auch der Posten ‚BLAU‘. Zum anderen gibst du eine Bestellung zurück, in der FABE=‚BLAU‘ vorkommt.
Im Ergebnis darf die Bestellnr ‚1234‘ nicht vorkommen, da sie eine POsition FABE=‚BLAU‘ enthält.
Denke ich zu kompliziert? :o)
Gruß Markus