[SQL allgemein] Join-Problem

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

  • [SQL allgemein] Join-Problem

    Ich habe drei Tabellen, aus denen ich Daten mit Hilfe eines left joins auslese. Bis auf das Auslesen der Punkte (in Tablle 3 gespeichert) funktioniert auch alles bestens. Ich nehme an, es liegt daran, dass ich im "ON"-Teil zwei Felder (produkt_id und farb_id) von Tabelle 3 mit den enstprechenden Feldern aus Tabelle 2 vergleiche.

    SELECT t1.hersteller, t1.produkt, t2.*, t3.punkte
    FROM `tabelle1` t1
    LEFT JOIN (`tabelle2` t2, `tabelle3` t3) ON (t2.produkt_id = t1.produkt_id AND t3.farb_id = t2.farb_id AND t3.produkt_id = t2.produkt_id)
    WHERE t1.hersteller="'.$hersteller.'"
    ORDER BY t3.punkte DESC, t1.produkt DESC

    Kann mir jemand einen Tipp geben, wie ich das Problem umgehen kann, ohne eine zusätzliche ID einführen zu müssen?

    Hier meine Datenbankstruktur:

    tabelle 1:
    produkt_id
    hersteller
    produkt
    ..
    .

    tabelle 2:
    id
    produkt_id
    farb_id
    ..
    .

    tabelle 3:
    id
    produkt_id
    farb_id
    punkte

    Tabelle 1 enthält die Hauptdaten der verschiedenen Produkte.
    Tabelle 2 enthält Daten über die verschiedenen Farbvarianten.
    Tabelle 3 enthält ausschließlich Punkte für die verschiedenen Farbvarianten.
    Das Genie überblickt das Chaos!

    Wer Rechtschreibfehler findet, darf sie behalten!

  • #2
    vlt würds auch helfen, wenn du sagen würdest was genau nicht funktioniert und welcher Fehler rauskommt?
    Für Rechtschreibfehler übernehme ich keine Haftung!

    Kommentar


    • #3
      Das Problem ist, dass ich die Punkte nicht ausgeben kann und dann auch nicht nach Punkten sortiert wird. Die anderen Daten kann ich ausgeben, nur die entsprechenden Punkte werden nicht ausgegeben.
      Das Genie überblickt das Chaos!

      Wer Rechtschreibfehler findet, darf sie behalten!

      Kommentar


      • #4
        mach doch so

        select .... from t1 left join t2 on ... left join t3 on ...

        Kommentar


        • #5
          Okay, danke. Ich werd's ausprobieren.

          Gibt es eine gute Seite, die das Thema Joins behandelt?
          Das Genie überblickt das Chaos!

          Wer Rechtschreibfehler findet, darf sie behalten!

          Kommentar


          • #6
            Hmm, ich hab's jetzt so versucht, aber auch auf diese Art funktioniert es nicht. Hab den Code wie folgt abgeändert:

            SELECT t1.hersteller, t1.produkt, t2.*, t3.punkte
            FROM `tabelle2` t2
            LEFT JOIN `tabelle1` t1 ON t1.produkt_id = t2.produkt_id LEFT JOIN `tabelle3` t3 ON t3.produkt_id = t2.produkt_id AND t3.farb_id = t2.farb_id
            WHERE t1.hersteller="'.$hersteller.'"
            ORDER BY t3.punkte DESC, t1.produkt DESC

            Problem ist nach wie vor, dass ich die Punkte nicht ausgeben kann. Außerdem werden die Produkte nicht nach Punkten sortiert.
            Das Genie überblickt das Chaos!

            Wer Rechtschreibfehler findet, darf sie behalten!

            Kommentar

            Lädt...
            X