Wie formuliere ich die SELECT?

Hi SQL Fachleute,

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?

Danke.
j

Hallo,

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.

Grüße
Thorsten

Uiiiihhhhhhiiii

?

-(

Jooo, hier gibts ja noch echte Experten.

Kannst du das evlt. mal mit einer beispielhaften SELECT Anweisung beschreiben?

Danke.

J

Servus,

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).

Gruss,
SomeOne

Hi!

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 …

Viele Wege führen nach Rom …

Grüße,
Tomh

Hallo,

danke, das hilf mir schon mal.

Das ist übrigens das SQLite System.

Grüße
J

Hi SomeOne,

klasse Antwort. Danke dir.

Du bist übrigens nicht „SomeOne“, sondern „RightOne“, weil du ne Klasse Antwort gegeben hast.

Aber natürlich danke ich auch den anderen, die mich angeregt haben, selber zu probieren…

Grüße
J