Abfragen I: Zusammenfassende Aufgaben zu Auswahlabfragen

Alle Aufgaben beziehen sich auf die Datenbank db_baumhandel, die folgende Struktur aufweist:

Sie können sich die Datenbank hier herunterladen. Alle Aufgaben beziehen sich auf den jeweiligen SQL-Code.

Aufgaben:

1. Erstellen Sie eine nach Postleitzahlen (aufsteigend) sortierte Liste mit den vollständigen Datensätzen aller Kunden:

2. Formulieren Sie eine Auswahlabfrage, die eine nach Kunden-ID (absteigend) sortierte Liste aller Kunden (Kunden-ID sowie Name und Vorname), deren Nachname mit B beginnt, ausgibt:

3. Geben Sie alle männlichen Kunden (Kunden-ID, Vorname, Name), die aus Bamberg kommen, aus, aufsteigend sortiert nach Namen:

4.1 Erstellen Sie eine Liste mit allen Obstbäumen (Artikel-ID und Bezeichnung):

4.2 Wandeln Sie die Abfrage aus 4.1 so in eine Parameterabfrage um, dass bei Eingabe des Kategorienamens eine Liste mit allen Bäumen der entsprechenden Kategorie ausgegeben wird.

5.1 Erstellen Sie eine Liste mit allen Bestellungen (Auftragsnummern, Artikelnummern und bestellte Mengen)
des Kunden mit der Kunden-ID 7:

5.2 Formulieren Sie die Abfrage 5.1 als Parameterabfrage für alle Kunden, so dass bei Aufruf der Abfrage nur die Kunden-ID des jeweiligen Kunden eingegeben werden muss und daraufhin eine Liste mit allen Bestellungen des entsprechenden Kunden erscheint.

6.1 Formulieren Sie eine Abfrage, durch die eine nach Artikel-ID gruppierte Liste ausgegeben wird, in der die Artikel-ID, die Bezeichnung und die dazugehörige gesamte bestellte Menge im Jahr 2018 angezeigt wird:

Anmerkung: Um aus einer Datumsangabe das Jahr zu eliminieren, wird die Anweisung „HAVING  Year([%Spaltenbezeichner%])=Jahresangabe“ verwendet. Analog hierzu können auch Tag und Monat ausgewählt werden. Die HAVING-Anweisung muss grundsätzlich am Ende des SQL-Codes stehen.

6.2 Wandeln Sie die Auswahlabfrage aus Aufgabe 6.1 in eine Parameterabfrage um, so dass nach Eingabe der Artikel-ID die Artikelbezeichnung und die dazugehörige gesamte bestellte Menge des Jahres 2018 nur für diesen Artikel erscheinen:

7. Erstellen Sie eine Geburtstagsliste für alle unsere Kunden. Dabei sollen die Felder Vorname, Name und Geburtsdatum angezeigt werden. Die Liste soll aufsteigend nach Monat, Tag, Jahr und Nachname (in dieser Reihenfolge) angezeigt werden:

8.1 Formulieren Sie eine Abfrage, mit der sich der Gesamtumsatz des Jahres 2018 ermitteln lässt:

8.2 Wandeln Sie die Abfrage aus 8.1 so ab, dass bei Eingabe einer beliebigen Kundennummer, der Jahresumsatz 2018 für den entsprechenden Kunden mit seiner Kundennummer angezeigt wird.

Lösungen

Aufgabe 1

SELECT tbl_kunde.kunden_id, tbl_kunde.name, tbl_kunde.vorname,
tbl_geschlecht.geschlechtsbezeichnung, tbl_kunde.adresse, tbl_plz.plz,
tbl_ort.ortsbezeichnung, tbl_kunde.geburtsdatum
FROM tbl_ort, tbl_plz, tbl_kunde, tbl_geschlecht
WHERE tbl_kunde.geschlechts_nr = tbl_geschlecht.geschlechts_id and
tbl_kunde.plz_nr = tbl_plz.plz_id and tbl_plz.orts_nr = tbl_ort.orts_id
ORDER BY tbl_plz.plz;

Aufgabe 2

SELECT tbl_kunde.kunden_id, tbl_kunde.name, tbl_kunde.vorname
FROM tbl_kunde
WHERE tbl_kunde.name Like „B*“
ORDER BY tbl_kunde.kunden_id DESC;

Aufgabe 3

SELECT tbl_kunde.kunden_id, tbl_kunde.vorname, tbl_kunde.name
FROM tbl_kunde, tbl_plz, tbl_ort, tbl_geschlecht
WHERE tbl_geschlecht.geschlechtsbezeichnung=“m“ AND
tbl_ort.ortsbezeichnung=“bamberg“ and tbl_kunde.plz_nr = tbl_plz.plz_id and
tbl_plz.orts_nr = tbl_ort.orts_id and tbl_kunde.geschlechts_nr =
tbl_geschlecht.geschlechts_id
ORDER BY tbl_kunde.name;

Aufgabe 4.1

SELECT tbl_baum.artikel_id, tbl_baum.bezeichnung
FROM tbl_baum, tbl_kategorie
WHERE tbl_kategorie.kategoriebezeichnung=“Obstbäume“ and
tbl_baum.kategorie_nr = tbl_kategorie.kategorie_id;

Aufgabe 4.2

SELECT tbl_baum.artikel_id, tbl_baum.bezeichnung
FROM tbl_baum, tbl_kategorie
WHERE tbl_kategorie.kategoriebezeichnung=[Bitte geben Sie eine Kategorie ein] and tbl_baum.kategorie_nr = tbl_kategorie.kategorie_id;

Aufgabe 5.1

SELECT tbl_kunde.kunden_id, tbl_bestellung.auftrags_id,
tbl_bestellposition.artikel_nr, tbl_bestellposition.[Bestellte Menge] FROM tbl_kunde, tbl_bestellung, tbl_bestellposition
WHERE tbl_kunde.kunden_id=7 and tbl_kunde.kunden_id =
tbl_bestellung.kunden_nr and tbl_bestellung.auftrags_id =
tbl_bestellposition.auftrags_nr;

Aufgabe 5.2

SELECT tbl_kunde.kunden_id, tbl_bestellung.auftrags_id,
tbl_bestellposition.artikel_nr, tbl_bestellposition.[Bestellte Menge] FROM tbl_kunde, tbl_bestellung, tbl_bestellposition
WHERE tbl_kunde.kunden_id=[Bitte geben Sie eine Kunden-ID ein] and
tbl_kunde.kunden_id = tbl_bestellung.kunden_nr and tbl_bestellung.auftrags_id =
tbl_bestellposition.auftrags_nr;

Aufgabe 6.1

SELECT tbl_baum.artikel_id, tbl_baum.bezeichnung,
Sum(tbl_bestellposition.[Bestellte Menge]) AS [SummevonBestellte Menge],
Year([Bestelldatum]) AS Jahr
FROM tbl_bestellung, tbl_bestellposition, tbl_baum
WHERE tbl_bestellung.auftrags_id = tbl_bestellposition.auftrags_nr and
tbl_baum.artikel_id = tbl_bestellposition.artikel_nr
GROUP BY tbl_baum.artikel_id, tbl_baum.bezeichnung, Year([Bestelldatum])
HAVING Year([Bestelldatum])=2018;

Aufgabe 6.2

SELECT tbl_baum.bezeichnung, Sum(tbl_bestellposition.[Bestellte Menge]) AS[SummevonBestellte Menge], Year([Bestelldatum]) AS Jahr
FROM tbl_bestellung, tbl_bestellposition, tbl_baum
WHERE artikel_id = [Bitte geben Sie eine Artikelnummer ein] and
tbl_bestellung.auftrags_id=tbl_bestellposition.auftrags_nr and
tbl_bestellposition.artikel_nr = tbl_baum.artikel_id
GROUP BY tbl_baum.artikel_id, tbl_baum.bezeichnung, Year([Bestelldatum])
HAVING Year([Bestelldatum])=2018;

Aufgabe 7

SELECT tbl_kunde.vorname, tbl_kunde.name, tbl_kunde.geburtsdatum
FROM tbl_kunde
ORDER BY Month([geburtsdatum]), Day([geburtsdatum]), Year([geburtsdatum]),
tbl_kunde.name;

Aufgabe 8.1

SELECT Sum([tbl_baum]![preis]*[tbl_bestellposition]![Bestellte Menge]) AS
Jahresumsatz
FROM tbl_baum, tbl_bestellung, tbl_bestellposition
WHERE tbl_bestellung.auftrags_id = tbl_bestellposition.auftrags_nr and
tbl_baum.artikel_id = tbl_bestellposition.artikel_nr
GROUP BY Year([bestelldatum])
HAVING Year([bestelldatum])=2018;

Aufgabe 8.2

SELECT tbl_kunde.kunden_id, Sum([tbl_baum]![preis]*[tbl_bestellposition]![Bestellte
Menge]) AS Jahresumsatz
FROM tbl_baum, tbl_bestellung, tbl_bestellposition, tbl_kunde
WHERE tbl_kunde.kunden_id=[Bitte geben Sie die Kundennummer ein] and
tbl_bestellung.auftrags_id = tbl_bestellposition.auftrags_nr and tbl_baum.artikel_id =
tbl_bestellposition.artikel_nr and tbl_kunde.kunden_id = tbl_bestellung.kunden_nr
GROUP BY tbl_kunde.kunden_id, Year([bestelldatum])
HAVING Year([bestelldatum])=2018;