Announcement

Collapse
No announcement yet.

JOIN über mehrer Tabellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • JOIN über mehrer Tabellen

    Hallo liebe Leute,

    wahrscheinlich ein leidiges Thema, aber ich bin nicht der schlaueste Fuchs und habe mir etwas die Zähne ausgebissen.

    Folgende Tabellen:

    1. tbl_upload
    upload_id,
    fach_id,
    inhalt,
    url

    2. tbl_fach
    id,
    fach

    3. tbl_klausur
    id,
    fach_id,
    thema,
    upload_id

    Eine Klausur kann mehrere Uploads enthalten, dazu enthält tbl_klausur ggf. mehrere Einträge der gleichen Klausur, aber mit unterschiedlicher upload_id

    So soll es die Ausgabe aussehen:

    Datum Fach Thema Uploads
    12.02.2011 TEN Klausur "Name1" des Inhalts aus tbl_upload,
    "Name2" des Inhalts aus tbl_upload usw.

    Es sollen alle Klausuren ausgegeben werden. Dazu sollte der Name des Fachs erscheinen und alle mit der Klausur verbundenen Uploads. Die Uploads sollten in einer Tabellenzelle erscheinen.

    Ich kriegs nicht hin mit mehreren Left Joins.

    Hoffe, ihr könnt mir helfen?

    Vielen Dank

  • #2
    Originally posted by armstrong82 View Post
    ...Eine Klausur kann mehrere Uploads enthalten, dazu enthält tbl_klausur ggf. mehrere Einträge der gleichen Klausur, aber mit unterschiedlicher upload_id
    Warum verwendest du ein 1:1 Modell, um eine tatsächliche 1:n Beziehung abzubilden? Das ist doch schon vom Ansatz her falsch und macht die gesuchte Abfrage unnötig kompliziert.
    Besser wäre, die Upload-Tabelle würde ein Feld für die Klausur-ID enthalten. Damit wäre das Feld für die Fach-ID auch überflüssig.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      Gelbe Karte!

      Den Doppelpost unter "PHP/PHP & Datenbanken" habe ich gelöscht!
      Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

      Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

      Comment


      • #4
        Sorry

        Ich bin kein DB-Spezialst und beschäftige mich damit nur privat, aber ist die Beziehung von mir nicht richtig aufgestellt?

        Ein Upload kann NUR einem Fach zugeordnet werden.
        Eine Klausur kann NUR einem Fach zugeordent werden.
        Eine Klausur kann aber mehrere Uploads enthalten.

        1:n Beziehungen brauchen doch nicht notwendiger Weise eine Beziehungsmengentabelle oder?

        Tschuldige, ich wusste nicht, ob PHP oder MySQL der richtige Bereich dafür ist.
        Ich habe allerdings eine Lösung gefunden:

        PHP Code:

        SELECT
        *
        FROM
              tbl_klausur
        INNER JOIN
              tbl_fach
        ON
              tbl_klausur
        .fach_id tbl_fach.id
        LEFT OUTER JOIN
              tbl_upload
        ON
              tbl_klausur
        .upload_id tbl_upload.upload_id
        WHERE
              tbl_klausur
        .datum '$datum' AND fach '$fach' AND thema '$thema' 
        Damit bekomme alle Uploads eingetragenen Klausuren, auch wenn die Klausur mit keinem Upload verknüpft ist.

        Comment


        • #5
          Ahh, entschuldige,

          jetzt weiß ich was du meinst.

          Das mit der Klausurausgabe und der Verknüpfung kam erst später hinzu. Aber, die Klausur muss auf jeden Fall mit einem Fach verknüpft sein. Nur ein Upload muss nicht zwingend zu einer Klausur gehören. Dann geht deine Lösung doch nicht oder?

          Comment


          • #6
            Hallo,
            Originally posted by armstrong82 View Post
            ...Ein Upload kann NUR einem Fach zugeordnet werden.
            Eine Klausur kann NUR einem Fach zugeordent werden.
            Eine Klausur kann aber mehrere Uploads enthalten.
            Nach deinem jetzigen Modell sieht es aber etwas anders aus:
            Ein Upload kann EINEM Fach zugeordnet werden
            Eine Klausur kann EINEM Fach zugeordnet werden
            Eine Klausur kann EINEN Upload haben

            Das eine Klausur mehrere Uploads enthalten kann ist mit deinem DB-Modell nicht darstellbar.
            Dazu müsste es eher so aussehen:

            1. tbl_upload
            upload_id,
            fach_id,
            klausur_id
            inhalt,
            url

            2. tbl_fach
            id,
            fach

            3. tbl_klausur
            id,
            fach_id,
            thema

            Wobei hier durch die Businesslogik sicherzustellen wäre, dass Upload und Klausur nicht unterschiedlichen Fächern zugeordnet sind, bzw. ein Upload entweder einem Fach ODER einer Klausur zugeordnet ist.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment

            Working...
            X