MySQL doppelte INNER JOIN Abfrage

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

  • MySQL doppelte INNER JOIN Abfrage

    Hi

    Ich hoffe mir kann jemand von Euch noch helfen
    Ich habe folgende Tabellen:

    Tabelle SPIELE:
    spiele_id (int) » z.B. 5
    team_p1 (int) » z.B. 2
    team_p2 (int) » z.B. 3

    Tabelle TEAMS:
    teams_id (int) » z.B. 3
    name (varchar) » z.B. Paris

    So, jetzt will ich eine Abfrage machen, die mir zu jedem Spiel, die Spielnummer und die Namen der Teams anzeigt.

    Mit folgendem MySQL-Statement komme bekomme ich schonmal den Teamname, den Spieler 1 (team_p1 (Player 1)) gewählt hat:

    $query = "SELECT * FROM spiele INNER JOIN teams ON spiele.team_p1=teams.teams_id";

    Jetzt bin ich aber an dem Punkt angelangt, wo ich nicht mehr weiter weis, ich möchte nämlich auch den Teamnamen des Players 2 haben. Ich habe es mit folgenden Statements schon probiert, gibt aber immer einen Fehler:

    $query = "SELECT * FROM spiele INNER JOIN teams ON spiele.team_p1=teams.teams_id INNER JOIN teams ON spiele.team_p2=teams.teams_id";

    ... wie auch ...

    $query = "SELECT * FROM spiele INNER JOIN teams ON spiele.team_p1=teams.teams_id AND spiele.team_p2=teams.teams_id";

    Wie kann ich das jetzt realisieren?
    Den Sticky üner JOIN-Abfragen habe ich gelesen, bin ich auch kein PHP-Anfänger, aber irgendwie haperts bei dieser Abfrage.

    Vielen Dank im Vorraus ...
    Tobias

  • #2
    Es könnte nicht schaden, wenn du mal sagts, was das für Fehler sind.

    OffTopic:
    bin ich auch kein PHP-Anfänger
    das sagt nichts über deine Qualität als MySQLer aus

    Kommentar


    • #3
      You have an error in your SQL syntax near 'ON vs_nhl.team_tobias=vs_nhl_lineup.lineup_id' at line 1
      Der Fehler kommt, wenn ich dieses Statement verwenden:
      $query = "SELECT * FROM spiele INNER JOIN teams ON spiele.team_p1=teams.teams_id ON spiele.team_p2=teams.teams_id";
      Bei diesem Statement bekomme ich die falschen Ergebnisse und zwar nur die Ergebnisse, wo team_p1 gleich team_p2 ist
      $query = "SELECT * FROM spiele INNER JOIN teams ON spiele.team_p1=teams.teams_id AND spiele.team_p2=teams.teams_id";

      Kommentar


      • #4
        du darfst pro zwei "verjointer" tabellen nur ein ON verwenden, schließlich machst du ja auch nicht
        Code:
        SELECT *
        FROM tabelle
        WHERE spalte1 = 45 AND WHERE spalte2=78
        probier mal das:
        Code:
        SELECT
          s.spiele_id,
          t1.teams_id team1_id,
          t1.name team1_name,
          t2.teams_id team2_id,
          t2.name team2_name
        FROM
          teams t1
          INNER JOIN spiele s ON s.team_p1=t1.teams_id
            INNER JOIN teams t2 ON t2.teams_id=s.team_p2
        Ich denke, also bin ich. - Einige sind trotzdem...

        Kommentar


        • #5
          Original geschrieben von mrhappiness
          probier mal das:
          Code:
          SELECT
            s.spiele_id,
            t1.teams_id team1_id,
            t1.name team1_name,
            t2.teams_id team2_id,
            t2.name team2_name
          FROM
            teams t1
            INNER JOIN spiele s ON s.team_p1=t1.teams_id
              INNER JOIN teams t2 ON t2.teams_id=s.team_p2
          Weißt Du was? Du bist ein Gott
          Danke Dir vielmals, es funktioniert genau so wie ich es wollte.

          Grüße,
          Tobias

          Kommentar


          • #6
            Original geschrieben von digitalthread
            Du bist ein Gott
            und heut is erst mittwoch
            Ich denke, also bin ich. - Einige sind trotzdem...

            Kommentar

            Lädt...
            X