man stelle sich zwei Tabellen vor, erstellt mit SQLite DB Sytem.
Eine Tabelle enthält alle Kunden, also Name, Vorname, Adresse, usw.
Die zweite Adresse enthält alle Auftrage, also Datum, usw. (diese zweite Tabelle enthält möglicherweise direkt auch die Positionen, evlt. aber auch eine dritte Tabelle mit den Positionen, aber das ist hier für meine Anfrage erstmal egal).
Nun meine Frage; mir ist klar, wie ich Bedingungen abfragen kann, die zutreffen. Z.B. kann man leicht abfragaen, welche Kunden bereits einen Auftrag platziert haben.
Aber wie frage ich die Umkehrung ab? Wie frage ich ab, welche Kunden noch keinen Auftrag platziert haben? Und welche Möglichkeiten der Sortierung gibt es dann?
das ist relativ einfach, Du machst einen Left join zwischen Deiner Kunden- und Auftragstabelle, setzt einen Count auf den PK der Auftragstabelle und schränkst mit having auf die Kunden ein, die noch keinen Auftrag erteilt haben.
so was hier sollte das gewünschte Ergebnis liefern:
SELECT kunden.*
FROM kunden
LEFT JOIN auftrag ON auftrag.kundennummer = kunden.kundennummer
WHERE auftrag.kundennummer IS NULL
ORDER BY (jede Spalte aus kunden)
Du selektierst hier also die Einträge aus „kunden“ die mit ihrer Kundennummer keinen Treffer in „auftrag“ haben (Annahme: kundennummer ist das beiden Tabellen gemeinsame Kriterium).
Aber wie frage ich die Umkehrung ab? Wie frage ich ab, welche
Kunden noch keinen Auftrag platziert haben? Und welche
Möglichkeiten der Sortierung gibt es dann?
Welches System? Unter Oracle würde ich Dir ein simples not exists oder einen Outer-Join mit einem is null auf die „fehlenden“ Felder setzen.
Mit etwas Phantasie würde es sich auch mit einem Full-Outer-Join realisieren lassen …