Announcement

Collapse
No announcement yet.

Ergebnisse von zwei Abfragen kombinieren

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

  • Ergebnisse von zwei Abfragen kombinieren

    Ich stehe leider daneben:

    Habe drei Tabellen (die Spaltennamen sind in Klammern)

    Code:
    Noten         Id, Werk, Verlag_Id, Sammelheft_Id
    Sammelhefte   Id, Titel, Verlag_Id
    Verlage       Id, Name
    Folgende Abfrage zeigt mir den Namen des Verlages an über den Fremdschlüssel in der Tabelle "Noten":
    Code:
    SELECT n.Id, `Werk`, s.Titel, v.Name
    FROM `Noten` AS n
    LEFT JOIN Sammelhefte AS s ON n.Sammelheft_Id = s.Id
    LEFT JOIN Verlage AS v ON n.Verlag_Id = v.Id
    Folgende Abfrage zeigt mir den Namen des Verlages an über den Fremdschlüssel in der Tabelle "Sammelhefte":

    Code:
    SELECT Titel, vlg.Name
    FROM `Sammelhefte` AS sh
    LEFT JOIN `Verlage` AS vlg ON sh.Verlag_Id = vlg.Id
    Wie kann ich das mit einer einzigen Abfrage erledigen, in der es halt dann zwei Spalten mit dem Namen des Verlags gibt.
    Also: Es sollen alle Noten angezeigt werden, wobei der Name des Verlages aus der Tabelle "Noten" erscheinen soll aber auch aus der Tabelle "Sammelhefte".

    Danke für Hilfe.
    Gruß
    Ferdinand

  • #2
    Hallo,
    Originally posted by f.gruber View Post
    ..Wie kann ich das mit einer einzigen Abfrage erledigen, in der es halt dann zwei Spalten mit dem Namen des Verlags gibt.
    Du musst den Namen des Verlages halt zweimal Joinen!
    [highlight=sql]
    SELECT n.Id, Werk, s.Titel, v1.Name, v2.Name
    FROM Noten AS n
    LEFT JOIN Sammelhefte AS s ON n.Sammelheft_Id = s.Id
    LEFT JOIN Verlage AS v1 ON n.Verlag_Id = v1.Id
    LEFT JOIN Verlage AS v2 ON s.Verlag_Id = v2.Id
    [/highlight]

    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
      Vielen Dank für die Hilfe!

      Damit ich nur eine Spalte für den Verlag bekomme, habe ich noch eine Kleinigkeit verändert:
      Code:
      SELECT n.Id, Werk, s.Titel, 
      IF (n.Verlag_Id > 0, v1.Name, v2.Name) AS Verlag
      FROM Noten AS n
      LEFT JOIN Sammelhefte AS s ON n.Sammelheft_Id = s.Id
      LEFT JOIN Verlage AS v1 ON n.Verlag_Id = v1.Id
      LEFT JOIN Verlage AS v2 ON s.Verlag_Id = v2.Id
      ... falls jemand anderer ein ähnliches Problem haben sollte.
      Gruß
      Ferdinand

      Comment

      Working...
      X