====== Lösungsvorschläge Joins I ======
++++Gib die Liste mit den Namen aller jemals bestellen Artikel mitsamt ihres Bestelldatums aus. |
SELECT AName, BZeitpunkt FROM artikel, bestellt
WHERE artikel.ANr = bestellt.ANr
++++
++++Gib die Liste aller Kundennummern zusammen mit den Namen der Artikel, die unter dieser Nummer bestellt wurden, aus.|
SELECT kunden.KNr, artikel.AName FROM artikel, kunden, bestellt
WHERE artikel.ANr = bestellt.ANr
AND kunden.KNr=bestellt.KNr
++++
++++Gib alle Zeitpunkte aus, zu denen Thomas Tischler Artikel im Webshop bestellt hat. |
SELECT BZeitpunkt FROM kunden, bestellt
WHERE kunden.KVorname='Thomas'
AND kunden.KNachname='Tischler'
AND kunden.KNr=bestellt.KNr;
++++
++++ Gib die Namen aller Artikel aus, die Maximilian Mayer bestellt hat.|
SELECT KNachname,AName FROM kunden,bestellt,artikel
WHERE kunden.KNr = bestellt.KNr
AND artikel.ANr = bestellt.ANr
AND KVorname = "Maximilian"
AND KNachname = "Mayer";
++++
++++ Gib die Namen aller Kunden aus, die mindestens einmal einen Artikel bestellt haben, absteigend sortiert nach dem Datum der letzten Bestellung.|
SELECT KNachname, Max(BZeitpunkt) FROM kunden,bestellt
WHERE kunden.KNr = bestellt.KNr
GROUP By KNachname
ORDER BY Max(BZeitpunkt) DESC;
++++
++++ Gib pro Kunde aus, wie viele Artikel er insgesamt bestellt hat. Die Liste soll absteigend sortiert nach der Anzahl der Bestellungen ausgegeben werden. |
SELECT Knachname,sum(BAnzahl),count(*) FROM kunden,bestellt
WHERE kunden.KNr = bestellt.KNr
GROUP BY KNachname
ORDER BY count(*) DESC;
++++
++++Gib die Namen der Artikel aus mitsamt der Information, wie oft sie insgesamt bestellt wurden. Die Liste soll absteigend sortiert nach der Anzahl der Bestellungen ausgegeben werden.|
SELECT AName,SUM(BAnzahl) FROM artikel,bestellt
WHERE artikel.ANr = bestellt.ANr
GROUP By AName
ORDER BY SUM(BAnzahl) DESC;
++++
++++ Gib pro Kunde aus, wie viel Geld er insgesamt ausgegeben hat.|
SELECT KNachname,SUM(BAnzahl*APreis) FROM kunden,artikel,bestellt
WHERE artikel.ANr = bestellt.ANr
AND kunden.KNr = bestellt.KNr
GROUP BY KNachname;
++++
++++Gib die Nummern und Namen der Kundenpaare aus, die den gleichen Artikel bestellt haben.|
SELECT k1.KNachname, k2.KNachname, AName FROM
kunden AS k1, kunden AS k2,
bestellt AS b1,bestellt AS b2, artikel AS a
WHERE k1.KNr = b1.KNr
AND b1.ANr = a.ANr
AND b2.ANr = a.ANr
AND k2.KNr = b2.KNr
AND k1.KNr < k2.KNr;
++++
++++Zusatzaufgabe: Gib die Liste aller Kunden aus, die noch nie einen Artikel im Webshop bestellt haben.|
SELECT kunden.KNachname, kunden.KVorname
FROM kunden
WHERE kunden.KNr NOT IN
(SELECT DISTINCT bestellt.KNr FROM bestellt);
++++