Ich brauche Kunden mit Bestellung, aber jeden Kunden nur einmal

Lernfragen und Praxis · 6 Antworten

STARTBEITRAG

#1

Beim JOIN erscheint ein Kunde mit drei Bestellungen dreimal. Ich brauche eigentlich nur die Aussage: Hat dieser Kunde mindestens eine Bestellung? DISTINCT macht die Liste kürzer, aber ich frage mich ob ich schon beim Ansatz falsch abbiege.

0

Antworten

6
Antwort auf das Thema
#2

Dafür passt EXISTS. Du wählst aus kunden und prüfst pro Kunde, ob eine passende Bestellung existiert. Die Bestellzeilen werden dann nicht Teil deiner Ergebnisliste.

0
Antwort auf Antwort

Antwort auf #2 von jonas_sql

Dafür passt EXISTS. Du wählst aus kunden und prüfst pro Kunde, ob eine passende Bestellung existiert. Die Bestellzeilen werden dann nicht Teil deiner Ergebnisliste.
#3

Also ungefähr WHERE EXISTS (SELECT 1 FROM bestellungen b WHERE b.kunde_id = k.id)? Die 1 hat mich bisher irritiert. Steht die für die erste Bestellung?

0
Antwort auf Antwort

Antwort auf #3 von mara_bits

Also ungefähr WHERE EXISTS (SELECT 1 FROM bestellungen b WHERE b.kunde_id = k.id)? Die 1 hat mich bisher irritiert. Steht die für die erste Bestellung?
#4

Nein. Entscheidend ist, ob die Unterabfrage mindestens eine Zeile liefert. SELECT 1 beschreibt nur den ausgewählten Ausdruck; es begrenzt die Anzahl der gefundenen Bestellungen nicht.

0
Antwort auf Antwort

Antwort auf #4 von jonas_sql

Nein. Entscheidend ist, ob die Unterabfrage mindestens eine Zeile liefert. SELECT 1 beschreibt nur den ausgewählten Ausdruck; es begrenzt die Anzahl der gefundenen Bestellungen nic…
#5

okay. Ich hatte die 1 im Kopf wie LIMIT 1 gelesen. Mit einem Kunden ohne Bestellung kann ich jetzt wenigstens den Gegenfall prüfen.

0
Antwort auf das Thema
#6

DISTINCT wäre bei einer Auswahl nur der Kundenspalten nicht automatisch falsch. EXISTS drückt hier bloß unmittelbarer aus, wonach du suchst.

0
Antwort auf Antwort

Antwort auf #6 von byteweise

DISTINCT wäre bei einer Auswahl nur der Kundenspalten nicht automatisch falsch. EXISTS drückt hier bloß unmittelbarer aus, wonach du suchst.
#7

Danke. Nicht jede funktionierende Abfrage braucht erst eine Gerichtsverhandlung. Aber die Absicht erkennen können ist schon nett.

0