Hallo, ich habe mal eine kleine Abfrage geschrieben zu folgender Aufgabe:
"Ermitteln sie welcher Kunde bestellt hat aber keine Lieferung bekommen hat"
meine SQL abfrage sieht folgendermaßen aus...
SELECT DISTINCT T_Kunden.name
FROM T_Kunden, T_Bestellungen, T_Positionen
WHERE T_Bestellungen.bestelldatum IS NOT NULL AND T_Bestellungen.lieferdatum IS NULL;
Angezeigt bekomme ich aber Alle Kunden!!!! und nicht nur die 2 die nicht beliefert wurden
Gruß
martin
Hallo,
das kann so nicht recht funktionieren.
1. Du hast eine Tabelle in der From-Klausel stehen, die nicht betroffen ist (T_Positionen)
2. Du hast Tabellen ihn der From-Klausel stehen, von denen NICHT bekannt gegeben wurde wie sie zusammenhängen.
3. Betrifft jedoch nicht das Ergebnis direkt ... Du verwendest in der T_Kunden ein reserviertes Wort als Feldnamen (name)
So sollte die Where-Klausel enthalten wie die T_Bestellungen mit der T_Kunden in Beziehung steht (wenn Primärschlüssel und Fremdschüssel KundenID heissen....)
WHERE T_Kunden.KundenID = T_Bestellungen.KundenID AND T_Bestllungen.Bestelldatum Is Not NULL AND T_Bestellungen.Lieferdatum IS NULL
oder
SELECT DISTINCT T_Kunden.[name]
FROM T_Kunden INNER JOIN T_Bestellungen
ON T_Kunden.KundenID = T_Bestellungen.KundenID
WHERE T_Bestellungen.bestelldatum IS NOT NULL AND T_Bestellungen.lieferdatum IS NULL
HTH
Peter