Ankündigung

Einklappen
Keine Ankündigung bisher.

Frage zu Joins

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Frage zu Joins

    Guten Tag Community

    brauche hilfe bei Joins. Hier erstmal Datenbank-Schema.

    http://www.directupload.net/file/d/3...7aon32_jpg.htm

    Nun die Aufgabenstellung:
    PHP-Code:
    Erstellen Sie eine Liste aller Klausurnoten, die schlechter als 4 sind! Die Liste soll die Fachbezeichnungden Vorund Nachnamen des Schülers und die Bezeichnung der Klasse enthalten
    Wie ich es Versucht habe:
    PHP-Code:
    select f.Bezeichnungkn.Note
    from  klausurnote kn join klausur ks on 
    (kn.knr ks.knr and kn.fnr=ks.fnr and kn.datum ks.datum
    join unterricht u on ks.knr=u.knr and ks.fnr=u.KNr join fach f on u.FNr=f.FNr 
    where kn
    .Note 4
    Und das ist die Lösung:
    PHP-Code:
    SELECT s.vornames.nachnamef.bezeichnungk.bezeichnung,
    kn.note
    FROM schueler s join klausurnote kn on s
    .snr=kn.snr join
    fach f on kn
    .fnr=f.fnr join klasse k on kn.knr=k.knr
    WHERE note 
    4
    Irgendwie verstehe ich das, und doch nicht ganz ... Wenn jemand lust hat, kann mir ja sagen was ich falsch mache.


  • #2
    Im Schema fehlt die Verbindung Klausurnote<->Fach, was dich vermutlich zu dem Umweg über Unterricht gebracht hat, welchen du nicht gebraucht hättest.
    Außerdem hast du im SELECT-Teil vergessen, den (Vor- und Nach-)Namen abzurufen. In den ON-Teilen hast du mehrere Vergleiche, welche bei Eindeutigen ID's (Normalisierte Datenbank vorrausgesetzt) nur selten, in deinem Fall garnicht notwending sind.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Wie schon tkausl schreibt, es gibt noch mehr Beziehungen als aus dem ERD hervorgehen. Durch diese zusammengesetzte Schlüssel ergeben sich noch andere Beziehungen.

      Dein Ansatz wäre aber trotzdem richtig, ausser das da noch der Schüler fehlt und Logikfehler drin ist.

      PHP-Code:
      on ks.knr=u.knr and ks.__fnr__=u.__KNr__ 
      Soviel zum Thema sprechende Namen und sinnlose Aliase.

      Zitat von tkausl Beitrag anzeigen
      In den ON-Teilen hast du mehrere Vergleiche, welche bei Eindeutigen ID's (Normalisierte Datenbank vorrausgesetzt) nur selten, in deinem Fall garnicht notwending sind.
      Wenn er joint wie im ERD sind diese Bedingungen nötig. Die Klausur ist ebend durch datum, knr, fnr definiert.

      Kommentar

      Lädt...
      X