Lösungen: Unterabfragen
Completion requirements
- /* Aufg. 1: Zeigen Sie alle Verlage an, die Bücher aus dem Gebiet "mod_cook" vertreiben! [1] */
- USE UebVerleger
- SELECT V_name AS Verlag, Ort FROM Verleger WHERE V_id IN
- (SELECT V_id FROM Titel WHERE Gebiet = 'mod_cook')
- /* Aufg. 2: Zeigen Sie alle Bücher aus der Datenbank Bibliothek an, */
- /* die von der Mitglieds_nr = 1222 ausgeliehen wurden! Benutzen Sie */
- /* hierbei das SQL-Schlüsselwort "EXISTS"! [2] */
- USE UebBibliothek
- SELECT Titel FROM Titel WHERE EXISTS
- (
- SELECT Titel_Nr FROM Leihvorgang
- WHERE Mitglieds_Nr = 1222 AND Titel.Titel_Nr = Leihvorgang.Titel_Nr
- )
- /* Aufg. 3: (doppelt verschachtelt) Zeigen Sie alle Bücher aus der Datenbank Bibliothek an, */
- /* die das Mitglied "Cassandra Makai" ausgeliehen hat! [23] */
- USE UebBibliothek
- SELECT Titel FROM Titel WHERE Titel_Nr IN
- (SELECT Titel_Nr FROM Leihvorgang WHERE Mitglieds_Nr IN
- (SELECT Mitglieds_Nr FROM Mitglieder WHERE Vorname LIKE 'Cassandra' AND Nachname LIKE 'Makai')
- )
- /* Aufg. 4: Zeigen Sie Mitglieds_Nr, Nachname und Vorname aller Mitglieder aus der Datenbank */
- /* Bibliothek sortiert nach Nachnamen an, die fällige Gebühren bereits bezahlt haben */
- /* (Gebühr_fällig = 0)! [112] */
- USE UebBibliothek
- SELECT Mitglieds_Nr, Nachname, Vorname FROM Mitglieder WHERE Mitglieds_Nr IN
- (SELECT Mitglieds_Nr FROM Historie WHERE Gebühr_fällig = 0)
- ORDER BY Nachname
- /* Aufg. 5: Listen Sie alphabetisch sortiert alle Verleger auf, die keine "Business"-Bücher verlegen! */
- /* Verwenden Sie dabei das SQL-Schlüsselwort "NOT EXISTS"! [6] */
- USE UebVerleger
- SELECT V_name FROM Verleger WHERE NOT EXISTS
- (SELECT * FROM Titel WHERE V_id = Verleger.V_id AND Gebiet = 'business')
- ORDER BY V_name
- /* Aufg. 6: Ermitteln Sie alle Titel, deren Preis hoeher ist, als der niedrigste Buchpreis */
- /* der Verlegers "Algodata Infosystems"! [9] */
- USE UebVerleger
- SELECT Titel FROM Titel WHERE Preis > ANY
- (SELECT Preis FROM Verleger INNER JOIN Titel
- ON Verleger.V_id = Titel.V_id AND V_name = 'Algodata Infosystems')
- /* Aufg. 7: Ermitteln Sie alle Titel in der Datenbank Verleger, die überdurchschnittlich */
- /* oft bestellt wurden und vergleichen Sie mögliche Lösungen hinsichtlich ihrer Abfragekosten */
- /* anhand des Ausführungsplans. [9] */
- USE UebVerleger
- SELECT Titel FROM Titel WHERE Titel_id IN (
- SELECT Titel_id FROM Auftrag
- WHERE menge > (SELECT avg(Menge) FROM Auftrag)
- );
- /* oder z.B. */
- SELECT Titel FROM Titel INNER JOIN Auftrag ON Titel.Titel_id = Auftrag.Titel_id
- WHERE menge > (SELECT avg(Menge) FROM Auftrag);
Der Ausführungsplan der Lösung von Aufg. 7 zeigt, dass die Abfragekosten in Relation zum Batch bei der ersten Abfrage geringer sind:

Last modified: Tuesday, 11 May 2021, 10:43 AM