Welcher Kunde hat die letzte Bestellung aufgegeben?

OtenMoten

Benutzer
Beiträge
15
Hallo liebe Community,

ich arbeite derzeit die Übungsaufgaben in einem Buch durch.
Momentan am Abschnitt 'Join'.

Die aktuelle Frage, welche mit seit einigen Stunden verzweifeln lässt lautet:
"Welcher Kunde hat die letzte Bestellung aufgegeben?"

Angegeben werden soll: kunden_nr, name und bestell_nr

Die Relationen sind Folgende:

Imgur: The most awesome images on the Internet

Mein bisheriger Code erlaubt es mir bei allen Varainten maximal 2 der 3 geforderten Attribute darzustellen.

Könnt ihr mir weiterhelfen?

Liebe Grüße

 
Werbung:
Code:
SELECT b.kunden_nr, b.bestell_nr, k.letzte_bestellung
FROM (SELECT MAX(letzte_bestellung) AS letzte_bestellung FROM kunde) AS k INNER JOIN bestellung AS b ON b.bestelldatum = k.letzte_bestellung

SELECT MAX(letzte_bestellung)
FROM (SELECT kunden_nr, name, letzte_bestellung FROM kunde) as k INNER JOIN bestellung ON bestellung.bestelldatum = k.letzte_bestellung;

SELECT k.kunden_nr, b.bestelldatum, k.name
FROM (SELECT MAX(bestelldatum) AS bestelldatum FROM bestellung) AS b INNER JOIN kunde AS k ON k.letzte_bestellung = b.bestelldatum;

SELECT MAX(letzte_bestellung)
FROM (SELECT bestell_nr, kunden_nr FROM bestellung) AS b INNER JOIN kunde AS k ON k.kunden_nr = b.kunden_nr;

SELECT b.kunden_nr, b.bestell_nr, k.name
FROM (SELECT kunden_nr, bestell_nr FROM bestellung) AS b INNER JOIN kunde AS k ON k.kunden_nr = b.kunden_nr;
 
Code:
SELECT k.kunden_nr,k.name,b.max(bestell_nr) AS bestell_nr,max(b.bestelldatum) AS bestelldatum
FROM kunde k
INNER JOIN bestellung b
ON k.kunden_nr = b.kunden_nr
GROUP BY k.kunden_nr,k.name
Wobei ich hier annehme das ein höheres Bestelldatum auch eine höhere Bestell_Nummer mit sich bringt was natürlich nicht so sein muss dann müsste man es anders machen. Auch könnte es dann meherere Bestellungen am selben Tag geben, dann ist die Frage ob mehrere ausgegeben werden sollen.
 
Hallo ukulele,

vielen Dank für deine Anwort.
Leider ist das Ergebnis nicht das Gewünschte.

Code:
101    Stein, Peter    151    2012-04-28 00:00:00.000
103    Randers, Nis    154    2012-05-15 00:00:00.000
105    Stuff, Werner    153    2012-05-12 00:00:00.000


Eventuell so:
Code:
SELECT TOP 1 k.kunden_nr, k.name, max(b.bestell_nr) AS bestell_nr, max(b.bestelldatum) AS bestelldatum
FROM kunde k INNER JOIN bestellung b ON k.kunden_nr = b.kunden_nr
GROUP BY k.kunden_nr, k.name
ORDER BY bestelldatum DESC;

103    Randers, Nis    154    2012-05-15 00:00:00.000

Mich würde jedoch interessieren ob man dieses Ergebnis auch ohne TOP erzielen könnte.
 
Also willst du nur einen Datensatz im Ergebnis haben und nicht pro Kunden die neueste Bestellung?
Code:
SELECT k.kunden_nr,k.name,b.bestell_nr,b.bestelldatum
FROM kunde k
INNER JOIN bestellung b
ON k.kunden_nr = b.kunden_nr
WHERE b.bestelldatum = ( SELECT max(bestelldatum) FROM bestellung )
 
Werbung:
Zurück
Oben