Tabelle ID,s verbinden

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

  • Tabelle ID,s verbinden

    Hallöchen liebe Helfer,
    ich (als MYSQL Anfänger) bin leider nicht in der Lage, einen (wahrscheinlich einfachen) JOIN hinzubekommen.

    Ich möchte aus der Tabelle: teams
    team_id / team_name
    1 / Karl
    2 / Heinz
    usw

    Zur Tabelle: spiele
    id / team_a / team_b / erg_1 / erg_2
    1 / 1 / 2 / 2 / 0
    2 / 2 / 3 / 1 / 2
    usw

    Mit folgender Abfrage:
    PHP-Code:
    SELECT 
    team_a 
    AS team
    team_b AS gegner
    erg_1 AS tore
    erg_2 AS gegentore
    erg_1 erg_2 AS tordiff 
    FROM spiele 
    UNION ALL 
    SELECT 
    team_b 
    AS team
    team_a AS gegner
    erg_2 AS tore
    erg_1 AS gegentore
    erg_2 erg_1 AS tordiff 
    FROM spiele 
    ORDER BY 
    team ASC
    ,tore ASC 
    in der Abfrage Spalte: team und gegner
    aus der Tabelle: teams
    die Namen zuordnen.

    Die obige Abfrage klappt. Nur bekomme ich (klar) nur die id,s der Spieler aber nicht die Namen dazu.

    Ich habe es mit JOIN und WHERE an verschiedenen Stellen versucht, aber ich scheiter kläglich.

    Bitte nicht schimpfen, aber ich habe nichts gefunden, was ich verstanden hätte. Auch nicht im RTFM.
    Steht da bestimmt drinne, aber ich hab es leider nicht gefunden bzw. verstanden.
    Zuletzt geändert von Wasser_Wanderer; 05.04.2013, 01:07. Grund: Schreibfehler: Meinte JOIN und nicht UNION

  • #2
    Hi Wasser_Wanderer,

    erinnere dich mal an meinem Select aus meinem Kommentar in deinem vorigem Post.

    Wenn du die Namen der Teams haben willst, musst du auch die Tabelle der Teams in deine Abfrage einbeziehen.

    Die IDs aus der Teamtabelle müssen dann mit den TeamIDs aus der Spieletabelle verknüpft werden.
    PHP-Code:
    SELECT ergebnisse.idt1.team as teamt2.team as gegnerp1p2p1-p2 as tordiff from teams t1teams t2ergebnisse 
    where t1
    .id=ergebnisse.team1_id and t2.id=ergebnisse.team2_id
    Union
    SELECT ergebnisse
    .idt2.team as teamt1.team as gegnerp2p1p1-p2 as tordiff from teams t1teams t2ergebnisse 
    where t1
    .id=ergebnisse.team1_id and t2.id=ergebnisse.team2_id order by team 
    Gruß
    Günni
    Zuletzt geändert von Guenni61; 05.04.2013, 13:11.

    Kommentar


    • #3
      Zitat von Guenni61 Beitrag anzeigen
      Hi Wasser_Wanderer,

      erinnere dich mal an meinem Select aus meinem Kommentar in deinem vorigem Post.

      Wenn du die Namen der Teams haben willst, musst du auch die Tabelle der Teams in deine Abfrage einbeziehen.
      Lieber Guenni,
      von ganzem Herzen

      Ich wusste einfach nicht wo und wie ich die WHERE Bedingung hinsetzen sollte.
      Aber dank deiner Hilfe klappt es nun so:
      PHP-Code:
      SELECT 
      spiele
      .id
      t1.team_name AS team
      t2.team_name AS gegner
      erg_1
      erg_2
      erg_1-erg_2 AS tordiff 
      FROM 
      teams t1

      teams t2
      spiele 
      WHERE 
      t1
      .team_id=spiele.team_a AND t2.team_id=spiele.team_b 
      UNION 
      SELECT 
      spiele
      .id
      t2.team_name AS team
      t1.team_name AS gegner
      erg_2
      erg_1
      erg_1-erg_2 AS tordiff 
      FROM 
      teams t1

      teams t2
      spiele 
      WHERE 
      t1
      .team_id=spiele.team_a AND t2.team_id=spiele.team_b 
      ORDER BY 
      team 
      Wieder was gelernt

      Guenni

      Kommentar


      • #4
        Hi Wasser_Wanderer,

        es hat sich noch ein kleiner Fehler eingeschlichen.

        Im zweiten SELECT hatte ich, wie im ersten, p1 - p2 as tordiff geschrieben. Hier muss es natürlich p2 -p1 heißen:

        Code:
        SELECT ergebnisse.id, t1.team as team, t2.team as gegner, p1, p2, p1-p2 as tordiff from teams t1, teams t2, ergebnisse 
        where t1.id=ergebnisse.team1_id and t2.id=ergebnisse.team2_id
        Union
        SELECT ergebnisse.id, t2.team as team, t1.team as gegner, p1, p2, p2-p1 as tordiff from teams t1, teams t2, ergebnisse 
        where t1.id=ergebnisse.team1_id and t2.id=ergebnisse.team2_id order by team
        Ansonsten ändert sich ja die "Zuordnung der Tordifferenz zu Team/Gegner".

        Heißt, wenn TeamA (as Team) gegen TeamB (as Gegner) 2:0 spielt, wäre p1-p2 ja +2 für TeamA (as Team).

        Werden Teams und Tore im zweiten SELECT umgedreht . . .

        TeamB (as Team) spielt gegen TeamA (as Gegner) 0:2

        . . . so muß hier natürlich p2-p1 gerechnet werden.

        Da hier TeamB jetzt unter Team steht, ist die Tordifferenz gegenüber TeamA (Gegner/vorher Team) folgerichtig -2.

        Hab' gerade mal ein bißchen mit versch. Abfragen rumprobiert, ich denke das müsste so richtig sein.

        Gruß
        Günni

        Kommentar


        • #5
          Hallöchen Günni,

          hatte ich auch schon bemerkt und getauscht

          Klappt nun auch mit der richtigen Tordifferenz

          Kommentar

          Lädt...
          X