Datenbankabfrage

snoophallo

Erfahrenes Mitglied
Hallo, ich habe eine kleine Frage und zwar habe ich zwei Tabellen eine KUNDEN und BESTELLUNGEN in der Datenbank KUNDEN und BESTELLUNGEN gibt es die Spalte KdNr, jetzt möchte ich eine Abfrage machen, welche KdNr aus der Tabelle KUNDEN nicht in der Tabelle Bestellungen vorkommt.
Also welcher Kunde bisher keine Bestellung aufgegeben hat.
Komm einfach nicht dahinter, kann mir eine weiterhelfen?
Ein Ansatz wie es vielleicht anfangen könnte.
PHP:
SELECT K.Name FROM Kunden AS K INNER JOIN Bestellungen AS B ON K.KdNr = B.KdNr WHERE....
 
Hier ein Ansatz: alle Kunden, deren Nummer nicht in der Tabelle Bestellungen vorkommen.

Code:
SELECT K.Name FROM Kunden AS K WHERE K.KdNr NOT IN (SELECT DISTINCT B.KdNr FROM Bestellungen AS B)
 
Danke für die schnelle Antwort, habe aber noch eine Frage und zwar gegeben sind die Tabellen KUNDEN, BESTELLUNGEN und ARITKEL

KUNDEN hat die Spalten:
KdNr (Primärschlüssel), Name

BESTELLUNGEN
KdNr, Teilenr, Menge

ARTIKEL
Teilenr(Primärschlüssel), Artikelname, Preis

Die Frage lautet:
Kunden, die nie Pedalen bestellt haben (unter Verwendung des Artiekelnamens)

Ausgegeben werden sollen die Namen aus der Tabelle KUNDEN die auf die Frage zutreffen.
Der Artikelname ist in der Tabelle ARTIKEL untergebracht.

Kann mir vielleicht hier noch jemand weiterhelfen?
 
Funktioniert nach demselben Prinzip:
Schnapp Dir alle Namen, die nicht in der Menge der Kunden vorkommen, die Pedale bestellt haben.

Code:
SELECT K.Name FROM Kunden AS K
WHERE K.KdNr NOT IN
(SELECT DISTINCT B.KdNr FROM Bestellungen AS B INNER JOIN Artikel AS A ON B.TeileNr = A.TeileNr WHERE A.Artikelname = "Pedal")
 
Eine Frage ist noch aufgetaucht:
Kunden, die für über 200€ Pedalen bestellt haben.

Ein Ansatz wäre da:
PHP:
SELECT K.Name, SUM(B.Menge*A.Preis) FROM Kunden AS K 
INNER JOIN Bestellungen AS B USING(KdNr) 
INNER JOIN Artikel AS A USING(Teilenr) 
GROUP BY K.Name HAVING SUM(B.Menge*A.Preis)>200;

Allerdings fehlt mir die Teilung, dass nur die Preise von Pedalen zusammengerechnet werden sollen.
 
Also fürs bessere Verständinis:
Die Fage lautet

Alle Kunden auflisten, die für über 200€ Pedalen bestellt haben.

Mit folgender Abfrage ist es möglich den Gesamtbestellpreis eines Kunden mit 200€ zu vergleichen.
PHP:
SELECT K.Name, SUM(B.Menge*A.Preis) FROM Kunden AS K  
INNER JOIN Bestellungen AS B USING(KdNr)  
INNER JOIN Artikel AS A USING(Teilenr)  
GROUP BY K.Name HAVING SUM(B.Menge*A.Preis)>200;

Ich weiß aber jetzt nicht wie ich in die Abfrage noch die Anweisung einbauen soll, dass nur die Preise*Menge der Pedal-Bestellungen berücksichtigt werden sollen.
 
Zurück