SQL Beispiele 5,6,9,10

  • Stimmen meine Lösungen?


    ich weis nicht ob man bei 5. soviel vermixen darf und ob da eine gültige Tabelle rauskommt. Muss man bei SQL zuerst nachprüfen ob ein wert nicht null ist und dann vergleichen weil sonst reicht in Bsp 6.
    where Ausleihe.von <2002 and Ausleihe.bis = null


    Zu Bsp 9 und 10 gibts doch sicher eine gescheitere Vorgehensweise als den ganzen Relationen folgend 3 Verschachtelungen zu begehen oder?


    mfg Zentor

  • bei 9,10 wäre eine Alternative vielleicht


    aber da ist wieder so ein großes karthesisches Produkt, is die Variante richtig/günstig?
    mfg Zentor

  • hi!


    also wenn ich das verstanden habe,
    muss man einen natural join immer extra anschreiben,
    sonst wird das kartesische produkt gebildet.


    Zitat

    Muss man bei SQL zuerst nachprüfen ob ein wert nicht null ist und dann vergleichen weil sonst reicht in Bsp 6.
    where Ausleihe.von <2002 and Ausleihe.bis = null


    das auf null überprüfen is nicht notwendig
    (buch s 88: "... ein vergleich mit einem nullwert hätte immer false ergeben")


    bei bsp 6 wäre meine lösung

    Code
    1. select Buch.Titel, Kunde.Knr, Kunde.Nachname, Ausleihe.von
    2. from Buch, [b]Exemplar[/b], Kunde, Ausleihe
    3. where [b]Ausleihe.InvNr = Exemplar.InvNr and
    4. Exemplar.ISBN = Buch.ISBN and
    5. Kunde.KNr = Ausleihe.KNr and [/b]
    6. Ausleihe.bis not null and
    7. Ausleihe.von < 2002


    bin mir auch nicht sicher ob das stimmt.
    aber ich denke dass man die relation exemplar
    dazunehmen müsste, oder?

  • Zitat

    Original geschrieben von Zentor
    Heisst das nun die erste Variante oder die 2. is besser?:confused:


    welche version professioneller oder gschickter is, weiß ich auch nicht.
    aber imho fehlt bei der zweiten version von 9
    ein abschließendes "group by"
    sonst werden leute die sich mehrmals mathebücer geliehen
    haben ja oft aufgelistet.


    mfg, tocvolxa


    ach ja, und das "Mathematik" muss ma für die dmlu-datenbank klein schreiben, sonst funzt nix :D

  • Zentor bsp 10:


    ich glaube du versäumst durch deine query die leute, die noch nie ein buch ausgeliehen haben (und folglich auch noch nie ein belletristisches buch ausgeliehen haben)


    außerdem fehlen die group by's, sonst kommen ja die kunden pro buch das sie ausgeliehen haben ins ergebnis


    meine lösung sieht so aus: