/* ** Aufgabe 1 ** ** Welche Veranstaltungen werden am 5. Mai 2023 gegeben? ** ** titel uhrzeit ** ------------------------------ ** Der gestiefelte Kater 10:00 ** Kabarett 2023 19:30 */ /* ** Aufgabe 2 ** ** Welche Sitzplätze wurden unter dem Passcode 'a' reserviert. ** ** Anmerkung ** ========= ** ** Für verschiedene Reservierunge werden jeweils ** verschiedene Codes "passcode" verwendet (unique). ** Das heißt, ein Passcode kommt in maximal einmal zum Einsatz. ** ** reihe platz ** ----------- ** 1 1 ** 1 2 ** 1 3 ** 1 4 ** 1 5 */ /* ** Aufgabe 3 ** ** Was muss der Kunde für die von ihm unter dem Passcode 'a' ** reservierten Plätze (siehe vorherige Aufgabe) bezahlen? ** ** gesamtpreis ** ----------- ** 777.50 ** ** Überprüfen Sie Ihre Lösung, indem Sie ermitteln, was ein ** (vermutlich anderer) Kunde für die von ihm unter dem ** 'abc' reservierten Plätze am 25. Januar 2023 bezahlen ** muss. ** ** gesamtpreis ** ----------- ** 46.50 */ /* ** Aufgabe 4 ** ** Schreiben Sie eine View ** rechnung(beginn, titel, passcode, summe), ** mit der man für jeden Kunden den Gesamtpreis berechnen kann, ** den der Kunde für die von ihm an einem bestimmten Tag, zu einer ** bestimmten Uhrzeit unter einen bestimmten Passcode reservierten ** Karten bezahlen muss. ** ** SELECT * FROM rechnung ORDER BY beginn, passcode; ** ** beginn titel passcode summe ** ----------------------------------------------------------------------- ** 2023-01-24 16:00:00 Frau Holle 2023-01-24 16:00 255.50 ** 2023-01-24 16:00:00 Frau Holle a 77.50 ** 2023-01-25 15:00:00 Frau Holle 2023-01-25 15:00 44.50 ** 2023-01-25 15:00:00 Frau Holle .... 27.00 ** 2023-01-25 15:00:00 Frau Holle abc 46.50 ** 2023-01-25 19:30:00 Kabarett 2023 2023-01-25 19:30 64.00 ** 2023-01-25 19:30:00 Kabarett 2023 ... 84.00 ** 2023-01-25 19:30:00 Kabarett 2023 ... 124.00 ** 2023-01-26 15:00:00 Frau Holle ... 15.50 ** 2023-01-26 15:00:00 Frau Holle ... 62.00 ** 2023-05-05 10:00:00 Der gestiefelte Kater ... 13.50 ** 2023-05-05 19:30:00 Kabarett 2023 ... 15.50 */ /* ** Aufgabe 5 ** ** Beantworten Sie die Frage aus Teilaufgabe 3 nochmals. Nehmen Sie diesmal ** die in Aufgabe 4 definierte View zu Hilfe. ** ** summe ** ----- ** 77.50 */ /* ** Aufgabe 6 ** ** Wie viele Karten wurden die Kindervorstellung „Frau Holle“ ** am 24. 1. 2023 direkt an der THEATERKASSE verkauft und wie ** hoch ist die Summe der Verkaufspreise dieser Karten? ** ** anzahl summe ** -------------- ** 21 255.50 ** ** Berechnen Sie diese Werte erst einmal direkt. Erweitern Sie dann ** die View aus Aufgabe 4 so, dass Sie auch diese Aufgabe mit ** damit lösen können. */ /* ** Aufgabe 7 ** ** Erstellen Sie eine nach "tag" sortierte Übersicht, wie viele Plätze an ** JEDEM TAG im Theater RESERVIERT wurden. (Es geht nur um die Tage, d.h. ** beginn::DATE, nicht um die einzelnen Veranstaltungen. Außerdem sind ** nur echte Reservierungen gefragt, keine Barverkäufe.) ** ** Achten Sie darauf, dass auch diejenigen Tage ausgegeben werden, an denen ** zwar eine Veranstaltung stattfindet, aber (bislang) keine Plätze ** reserviert wurden. ** ** tag anzahl ** -------------------- ** 24. 01. 2023 5 ** 25. 01. 2023 12 ** 26. 01. 2023 5 ** 29. 01. 2023 0 ** 01. 02. 2023 0 ** 02. 02. 2023 0 ** 08. 02. 2023 0 ** 05. 05. 2023 2 */ /* ** Aufgabe 8 ** ** Schreiben Sie eine View ** ausverkauft(titel, beginn), ** die den Titel und die beginnzeit derjenigen Veranstaltungen ausgibt, ** die ausverkauft sind oder waren. ** Ein Veranstaltung gilt als ausverkauft, wenn ALLE verfügbaren Plätze ** reserviert wurden. ** ** Welche Veranstaltungen waren ausverkauft? ** ** titel beginn ** ------------------------------ ** Frau Holle 2023-01-24 16:00:0 */ /* ** Aufgabe 9 ** ** Kann Familie Kowarschick für das 'Frau Holle' am 25. 1. 2023 um 15:00 Uhr ** noch fünf benachbarte Sitzplätze derselben Kategorie reservieren? ** (Fünf Sitzplätze sind benachbart, wenn sie zur selben Reihe ** gehören und die maximale Sitzplatznummer um 4 größer ist als die minimale ** Sitzplatznummer.) ** ** Geben Sie jeweils die entsprechende Reihe, den Sitzplatz mit der ** niedrigsten Nummer sowie den Sitzplatz mit der höchsten Nummer aus. ** ** Schritt 1: ** Berechnen Sie zunächst, welche Sitzplätze für das 'Kabarett 2023' ** am 25. 1. 2023 um 15:00 Uhr überhaupt noch frei sind. ** ** reihe nummer sk_id ** -------------------- ** 2 8 2 ** 2 9 2 ** 2 10 2 ** 2 11 2 ** 2 12 2 ** 3 13 3 ** 3 14 2 ** 3 15 2 ** 3 16 2 ** 3 17 2 ** 3 18 2 ** 3 20 2 ** 3 21 3 ** 4 22 3 ** 4 23 3 ** 4 24 3 ** 4 25 3 ** 4 26 3 ** ** Schritt 2: ** Definieren Sie eine View ** frei(beginn, reihe, nummer, sk_id) ** mit der Sie Fragen gemäß Schritt 1 beantworten können. ** Achtung: In dieser View wird ein echtes kartesisches Produkt (CROSS JOIN) ** zweier Tabellen benötigt. Diese kartesische Produkt führt aber nicht ** zu Performanzproblemen, wenn man mit ihr nur Fragen zu bestimmten ** Veranstaltungen beantwortet. (Fragen der Art "Welche freien Sitzplätze ** gibt es für beliebige Veranstaltungen?" sind auch nicht sonderlich sinnvoll.) ** ** Die View gibt für die Beispielsdatenbank 236 Tupel aus. Für den ** 25. 1. 2023, 15:00 sind die genau die oben angegebenen Tupel. ** ** Schritt 3: ** Finden Sie nun mit Hilfe der zuvor definierten View zwei Plätze derselben ** Kategorie, die in derselben Reihe liegen und zwischen denen sich drei ** weitere Plätze befinden (d.h., die eine Platznummer ist um 4 größer ** als die andere). ** ** beginn sk_id reihe platz1 platz2 ** ----------------------------------------------------- ** 2023-01-25 15:00:00 2 2 8 12 ** 2023-01-25 15:00:00 2 3 14 18 ** 2023-01-25 15:00:00 2 3 15 19 ** 2023-01-25 15:00:00 2 3 16 20 ** 2023-01-25 15:00:00 3 4 22 26 ** 2023-01-25 19:30:00 2 3 14 18 ** 2023-01-25 19:30:00 2 3 15 19 ** 2023-01-25 19:30:00 2 3 16 20 ** 2023-01-25 19:30:00 3 4 22 26 ** 2023-01-26 15:00:00 ... ... ... ... ** ... ... ... ... ... ** ** Schritt 4: ** Erweitern Sie diese vorherige Anfrage. Zählen Sie, wie viele Plätze zwischen ** den beiden zuvor ermittelten Plätzen noch frei sind, und testen Sie, ** ob es sich um genügend Plätze handelt. ** ** Für den 25. Januar, 15:00 sind noch folgende Plätze frei: ** ** beginn sk_id reihe platz1 platz2 ** ----------------------------------------------------- ** 2023-01-25 15:00:00 2 2 8 12 ** 2023-01-25 15:00:00 2 3 14 18 ** 2023-01-25 15:00:00 3 4 22 26 ** ** Für SQL-Freaks: ** Schreiben Sie eine View, mit der man allgemein n freie, benachbarte ** Sitzplätze ermitteln kann. Die View gibt die Anzahl der freien Plätze ** zusätzlich aus. Für die obige Anfrage liefert die View folgendes ** Ergebnis. Insgesamt liefert die View 773 Ergebnistupel mit bis zu ** 7 freien benachbarten Plätzen. */