MySQL: Bezug zwischen 2 Tabellen herstellen

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

  • MySQL: Bezug zwischen 2 Tabellen herstellen

    Guten Tag

    Ich habe zwei MySQL-Tabellen erstellt. Die eine (tabelle1) enthält u.a. folgende Spalten:
    Spalte 1: heimteam
    Spalte 2: gastteam

    Die zweite Tabelle (tabelle2) enthält u.a. folgende Spalten:
    Spalte 1: groupid
    Spalte 2: teamname

    Nun möchte ich eine Tabelle ausgeben lassen welche die Begegnungen (heimteam - gastteam) ausgibt. In 'tabelle1' habe ich in den jeweiligen Spalten jedoch nur Zahlenwerte verwendet die der Spalte groupid aus 'tabelle2' entsprechen. Anstatt dass einfach direkt der Inhalt der Spalten aus 'tabelle1' ausgegeben wird (die ja nur Zahlen enthält). Soll zuerst jede Zahl mit den Zahlen aus 'tabelle2'/Spalte'groupid' verglichen werden und falls diese gleich sind der dazugehörige ein Teamname (spalte teamname aus tabelle2) zugeordnet bzw. ausgegeben werden. Kann mir jemand sagen wie ich einen solchen Bezug zwischen 2 Tabellen herstelle. Ich könnte auch direkt die Begegnungen in Tabelle 1 eintragen, errachte dies aber nicht als sinnvoll da die gleichen Teamnamen mehrmals vorkommen und bei einer Änderung auch alle einzeln geändert werden müssten. Danke für eure Hilfe!

    Gruss Chris

  • #2
    Öhmm formulier das ganze bitte nochmal neu. Irgend wie kann ich aus deinem Text nichts entnehmen was verwendbar ist.

    Sieht aber nach nem einfachen LEFT JOIN aus.
    -- Bat[e] / pixelcore.com

    Kommentar


    • #3
      Womöglich habe ich mich etwas kompliziert ausgedrückt. Ich versuche deshalb mein Problem nochmals etwas genauer zu schildern.
      Zuerst zu dem was ich erreichen möchte. Es soll eine Tabelle nach folgendem Muster ausgegeben werden:
      Spaltenüberschriften: Zeit; Heimteam; Gast; Schiedsrichter; etc.
      Ausgabebeispiel (formatiert): 13:30, FC Irgendwas - FC Entenhausen, Schiedsrichter: FC Luzern

      Zu diesem Zweck habe ich eine MySQL-Tabelle ('spielplan') mit den gleichen Überschriften angelegt. Die in dieser Tabelle enthaltenen Daten sehen folgendermassen aus (Beispielzeile):
      Zeile aus Tabelle ' spielplan': 13:30;B1;A3;D1

      Würde ich mit einem normalen "SELECT * FROM spielplan" eine Abfrage machen, sähe die formatierte Ausgabe nun etwa so aus:
      Ausgabebeispiel: 13:30, B1 - A3, Schiedsrichter: D1

      Dies ist natürlich nicht das Ziel. Die einzelnen Teamnummern (B1, A3 etc.) sollen bei der Ausgabe durch den dazugehörigen Teamnamen ersetzt werden. Also B1 wird in unserem Fall zu FC Irgendwas etc.
      Um dies zu realisieren habe ich eine zweite Tabelle angelegt ('teams' ->Spalten teamid und teamname), in welcher jeder Teamnummer eine Mannschaftsname zugeordnet wird. Das sieht dann in etwa so aus:
      teamid;teamname
      --------------------------
      A1;FC Irgendwas
      ...
      B1; FC Entenhausen
      ...
      D1;FC Luzern

      Und nun möchte ich die beiden Tabellen verknüpfen. Wenn man nur jeweils eine Spalte aus den beiden Tabellen nimmt klappt das auch wunderbar mit einer LEFT JOIN Anweisung. Doch wie muss ich vorgehen wenn ich alle Teamnummern (in mehreren Spalten vorhanden) aus der Tabelle 'spielplan' gleichzeitig durch den dazugehörigen Teamnamen ersetzen will?

      Ich habe mal eine Ersetzung für die in Spalte heimteam (Tabelle spielplan) vorhandenen Werte vorgenommen. Die Abfrage sieht in etwa so aus.
      SELECT spielplan.heimteam, teams.* FROM spielplan AS sp LEFT JOIN teams as t ON sp.heimteam = t.teamid

      Dieses Prinzip soll aber für alle Spalten der Tabelle 'spielplan' angewendet werden können, wennmöglich in einer einzigen Abfrage. Wie lautet da die korrekte MySQL-Syntax?

      Gruss chris

      Kommentar


      • #4
        ich würd das mit Objekten machen, es sollte halt ne übereinstimmende ID vorhanden sein oder etwas derartiges,oder du schreibst SELECT * FROM table1,table2 soll angeblich auch gehen

        Kommentar


        • #5
          Ist doch ganz einfach. Habe das schon beim ersten Mal verstanden, was Du willst.....

          Ich habe zwei MySQL-Tabellen erstellt. Die eine (tabelle1) enthält u.a. folgende Spalten:
          Spalte 1: heimteam
          Spalte 2: gastteam

          Die zweite Tabelle (tabelle2) enthält u.a. folgende Spalten:
          Spalte 1: groupid
          Spalte 2: teamname

          PHP-Code:
          SELECT
            TabHeim
          .GroupId,
            
          TabHeim.TeamName,
            
          TabGast.GroupId,
            
          TabGast.TeamName
            
          FROM Tabelle2 TabHeim
            LEFT INNER JOIN Tabelle1 Tab1 ON TabHeim
          .GroupID Tab1.HeimTeamId
              LEFT INNER JOIN Tabelle2 TabGast ON Tab1
          .GastTeamId TabGast.GroupId
              
          WHERE 
          ..... 

          Ich denke, dass das das ist, was Du benötigst.
          Probier es einfach mal aus. Die Spaltennamen musst Du evtl. noch anpassen.
          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


          Kommentar


          • #6
            Hi,

            schau doch mal unter...

            http://www.php-resource.de/forum/sho...&threadid=9481

            Gruß Roland

            Kommentar

            Lädt...
            X