faecher:informatik:oberstufe:datenbanken:joins:loseungen

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
faecher:informatik:oberstufe:datenbanken:joins:loseungen [27.01.2022 07:50] sbelfaecher:informatik:oberstufe:datenbanken:joins:loseungen [13.11.2024 11:36] (aktuell) Marco Kuemmel
Zeile 1: Zeile 1:
-====== Lösungen Joins I ======+====== Lösungsvorschläge Joins I ======
  
-++++ Gib die Liste mit den Namen aller jemals bestellen Artikel mitsamt ihres Bestelldatums aus. |+++++Gib die Liste mit den Namen aller jemals bestellen Artikel mitsamt ihres Bestelldatums aus. |
 <code sql> <code sql>
 SELECT AName, BZeitpunkt FROM artikel, bestellt SELECT AName, BZeitpunkt FROM artikel, bestellt
Zeile 8: Zeile 8:
 ++++ ++++
  
-++++ Gib die Liste aller Kundennummern zusammen mit den Namen der Artikel, die unter dieser Nummer bestellt wurden, aus.|+++++Gib die Liste aller Kundennummern zusammen mit den Namen der Artikel, die unter dieser Nummer bestellt wurden, aus.|
 <code sql> <code sql>
 SELECT kunden.KNr, artikel.AName FROM artikel, kunden, bestellt SELECT kunden.KNr, artikel.AName FROM artikel, kunden, bestellt
 WHERE artikel.ANr = bestellt.ANr WHERE artikel.ANr = bestellt.ANr
-AND kunden.KNr=bestellt.KNr+  AND kunden.KNr=bestellt.KNr
 </code> </code>
 ++++ ++++
  
-++++ Gib alle  Zeitpunkte aus, zu denen Thomas Tischler Artikel im Webshop bestellt hat. |+++++Gib alle  Zeitpunkte aus, zu denen Thomas Tischler Artikel im Webshop bestellt hat. |
 <code sql> <code sql>
-Gib pro Kunde auswie viele Artikel er insgesamt bestellt hatDie Liste soll absteigend sortiert nach der Anzahl der Bestellungen ausgegeben werden.+SELECT BZeitpunkt FROM kunden, bestellt  
 +WHERE kunden.KVorname='Thomas'  
 +  AND kunden.KNachname='Tischler'  
 +  AND kunden.KNr=bestellt.KNr;
 </code> </code>
 ++++ ++++
Zeile 27: Zeile 30:
 SELECT KNachname,AName FROM kunden,bestellt,artikel  SELECT KNachname,AName FROM kunden,bestellt,artikel 
 WHERE kunden.KNr = bestellt.KNr  WHERE kunden.KNr = bestellt.KNr 
-AND artikel.ANr = bestellt.ANr +  AND artikel.ANr = bestellt.ANr 
-AND KNachname = "Mayer";+  AND KVorname = "Maximilian" 
 +  AND KNachname = "Mayer";
 </code> </code>
 ++++ ++++
Zeile 36: Zeile 40:
 ++++ Gib die Namen aller Kunden aus, die mindestens einmal einen Artikel bestellt haben, absteigend sortiert nach dem Datum der letzten Bestellung.| ++++ Gib die Namen aller Kunden aus, die mindestens einmal einen Artikel bestellt haben, absteigend sortiert nach dem Datum der letzten Bestellung.|
 <code sql> <code sql>
 +SELECT KNachname, Max(BZeitpunkt) FROM kunden,bestellt 
 +WHERE kunden.KNr = bestellt.KNr  
 +GROUP By KNachname 
 +ORDER BY Max(BZeitpunkt) DESC;
 </code> </code>
 ++++ ++++
Zeile 51: Zeile 58:
 ++++ ++++
  
-  - 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. +++++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.| 
-  -  Gib pro Kunde aus, wie viel Geld er insgesamt ausgegeben hat. +<code sql> 
-  Gib die Nummern und Namen der Kundenpaare aus, die den gleichen Artikel bestellt haben. +SELECT AName,SUM(BAnzahl) FROM artikel,bestellt 
-  Zusatzaufgabe: Gib die Liste aller Kunden aus, die noch nie einen Artikel im Webshop bestellt haben.((Tipp: ''WHERE attribute NOT IN'' (SQL-Klausel). ))+WHERE artikel.ANr = bestellt.ANr 
 +GROUP By AName 
 +ORDER BY SUM(BAnzahl) DESC; 
 +</code> 
 +++++ 
 + 
 +++++ Gib pro Kunde aus, wie viel Geld er insgesamt ausgegeben hat.
 +<code sql> 
 +SELECT KNachname,SUM(BAnzahl*APreis) FROM kunden,artikel,bestellt 
 +WHERE artikel.ANr = bestellt.ANr 
 +  AND kunden.KNr = bestellt.KNr 
 +GROUP BY KNachname; 
 +</code> 
 +++++ 
 + 
 +++++Gib die Nummern und Namen der Kundenpaare aus, die den gleichen Artikel bestellt haben.
 +<code sql> 
 +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; 
 + 
 +</code> 
 +++++ 
 + 
 +++++Zusatzaufgabe: Gib die Liste aller Kunden aus, die noch nie einen Artikel im Webshop bestellt haben.
 +<code sql> 
 +SELECT kunden.KNachname, kunden.KVorname 
 +FROM kunden 
 +WHERE kunden.KNr NOT IN 
 +  (SELECT DISTINCT bestellt.KNr FROM bestellt)
 +</code> 
 +++++
  • faecher/informatik/oberstufe/datenbanken/joins/loseungen.1643269828.txt.gz
  • Zuletzt geändert: 27.01.2022 07:50
  • von sbel