1. /* Aufg. 1: Zeigen Sie alle Verlage an, die Bücher aus dem Gebiet "mod_cook" vertreiben! [1] */
  2.  
  3. USE UebVerleger
  4.  
  5. SELECT V_name AS Verlag, Ort FROM Verleger WHERE V_id IN
  6.    (SELECT V_id FROM Titel WHERE Gebiet = 'mod_cook')
  7.  
  8.  
  9.  
  10. /* Aufg. 2: Zeigen Sie alle Bücher aus der Datenbank Bibliothek an, */
  11. /* die von der Mitglieds_nr = 1222 ausgeliehen wurden! Benutzen Sie */
  12. /* hierbei das SQL-Schlüsselwort "EXISTS"! [2]                      */
  13.  
  14. USE UebBibliothek
  15.  
  16. SELECT Titel FROM Titel WHERE EXISTS
  17. (
  18.     SELECT Titel_Nr FROM Leihvorgang
  19.     WHERE Mitglieds_Nr = 1222 AND Titel.Titel_Nr = Leihvorgang.Titel_Nr
  20. )
  21.  
  22.  
  23.  
  24. /* Aufg. 3: (doppelt verschachtelt) Zeigen Sie alle Bücher aus der Datenbank Bibliothek an, */
  25. /* die das Mitglied "Cassandra Makai" ausgeliehen hat! [23]                                 */
  26.  
  27. USE UebBibliothek
  28.  
  29. SELECT Titel FROM Titel WHERE Titel_Nr IN
  30.    (SELECT Titel_Nr FROM Leihvorgang WHERE Mitglieds_Nr IN
  31.       (SELECT Mitglieds_Nr FROM Mitglieder WHERE Vorname LIKE 'Cassandra' AND Nachname LIKE 'Makai')
  32.    )
  33.  
  34.  
  35.  
  36. /* Aufg. 4: Zeigen Sie Mitglieds_Nr, Nachname und Vorname aller Mitglieder aus der Datenbank */
  37. /* Bibliothek sortiert nach Nachnamen an, die fällige Gebühren bereits bezahlt haben         */
  38. /* (Gebühr_fällig = 0)! [112]                                                                */
  39.  
  40. USE UebBibliothek
  41.  
  42. SELECT Mitglieds_Nr, Nachname, Vorname FROM Mitglieder WHERE Mitglieds_Nr IN
  43.    (SELECT Mitglieds_Nr FROM Historie WHERE Gebühr_fällig = 0)
  44. ORDER BY Nachname
  45.  
  46.  
  47.  
  48. /* Aufg. 5: Listen Sie alphabetisch sortiert alle Verleger auf, die keine "Business"-Bücher verlegen! */
  49. /* Verwenden Sie dabei das SQL-Schlüsselwort "NOT EXISTS"! [6]                                        */
  50.  
  51. USE UebVerleger
  52.  
  53. SELECT V_name FROM Verleger WHERE NOT EXISTS
  54.    (SELECT * FROM Titel WHERE V_id = Verleger.V_id AND Gebiet = 'business')
  55. ORDER BY V_name
  56.  
  57.  
  58.  
  59. /* Aufg. 6: Ermitteln Sie alle Titel, deren Preis hoeher ist, als der niedrigste Buchpreis */
  60. /* der Verlegers "Algodata Infosystems"! [9]                                              */
  61.  
  62. USE UebVerleger
  63.  
  64. SELECT Titel FROM Titel WHERE Preis > ANY
  65.    (SELECT Preis FROM Verleger INNER JOIN Titel
  66.    ON Verleger.V_id = Titel.V_id AND V_name = 'Algodata Infosystems')
  67.  
  68.  
  69. /* Aufg. 7: Ermitteln Sie alle Titel in der Datenbank Verleger, die überdurchschnittlich */
  70. /* oft bestellt wurden und vergleichen Sie mögliche Lösungen hinsichtlich ihrer Abfragekosten */
  71. /* anhand des Ausführungsplans. [9] */
  72.  
  73. USE UebVerleger
  74.  
  75. SELECT Titel FROM Titel WHERE Titel_id IN (
  76. SELECT Titel_id FROM Auftrag
  77. WHERE menge > (SELECT avg(Menge) FROM Auftrag)
  78. );
  79.  
  80. /* oder z.B. */
  81.  
  82. SELECT Titel FROM Titel INNER JOIN Auftrag ON Titel.Titel_id = Auftrag.Titel_id
  83. 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:

Ausführungspläne im Vergleich

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