Tabellen "verlinken"

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

  • Tabellen "verlinken"

    Hallo

    Ich bin gerade dabei, ein Fussballtippspiel in PHP umzusetzen. Bei der Datenbankstruktur habe ich allerdings noch Klärungsbedarf, ich frage mich, wie sich mein Vorhaben am besten umsetzen ließe.

    Geplant war, dass man Turniere erstellen kann, diesen Turnieren Matches (sprich Spiele) zuweisen kann, welche wiederrum 2 Teilnehmer (die Vereine, die gegeneinander antreten) und die erzielten Tore enthalten.

    Meine bisherigen Überlegungen:

    Ich habe 3 Tabellen.

    Die Tabelle Turniere mit id, name
    Die Tabelle Matches mit id, team1, team1, score1, score2, turnierID
    Die Tabelle Vereine mit id, name

    Matches enthält alle Spiele, egal aus welchem Turnier. Um ein Match einem Turnier zuordnen zu können, besitzt jedes Match das Feld turnierID, welches die ID des entsprechenden Turnieres aus Der Tabelle turniere enthält.

    Team1 und Team2 sind auch nur IDs, und zwar die der jeweiligen Vereine aus der gleichnamigen Tabelle.

    Was haltet ihr davon? Gibt es bessere Möglichkeiten?
    Wenn ich jetzt ein Match anzeigen lassen wollte, müsste ich ja erst aus den anderen beiden Tabellen den Turniernamen und die Vereinsnamen holen. Ist das so üblich?

    Ansonsten fällt mir auch gerade kein Query ein, der das auf einmal schafft. Da müssen wohl subqueries ran?

    Danke

  • #2
    Zitat von INC. Beitrag anzeigen
    Wenn ich jetzt ein Match anzeigen lassen wollte, müsste ich ja erst aus den anderen beiden Tabellen den Turniernamen und die Vereinsnamen holen. Ist das so üblich?
    Ja, ist es.

    Das Stichwort lautet JOINs.

    Einführung in Joins
    Fortgeschrittene Jointechniken
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Hallo wahsaga,

      danke schonmal.
      Also das mit den Joins ist garnicht so einfach, aufgegeben habe ich aber noch nicht.
      In der Zwischenzeit habe ich folgende Lösung ohne Joins gefunden:

      Code:
      select 
      (select name from vereine where id = matches.team1_id) as team1,
      (select name from vereine where id = matches.team2_id) as team2,
      (select name from turniere where id = matches.tourney_id) as tourney,
      from matches
      //where...
      Was hälst du davon, kann man das so einsetzen oder gibt es einen Grund, das schnell wieder zu Vergessen?

      Kommentar


      • #4
        Code:
        SELECT
        	v1.name,
        	v2.name,
        	t.name,
        	...
        FROM
        	matches m
        		LEFT JOIN vereine v1
        		ON (
        			m.team1_id = v1.id
        		)
        		LEFT JOIN vereine v2
        		ON (
        			m.team2_id = v2.id
        		)
        		LEFT JOIN turniere t
        		ON (
        			m.turnierID = t.id
        		)
        WHERE
        	...
        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


        • #5
          Probier doch beide Möglichkeiten aus und guck was besser ist (am besten mit explain).

          mfg jura
          [FONT=Comic Sans MS]Hab ich dir erfolgreich geholfen? Wenn ja, dann hilf mir auch und bewerte mich auf php-resource.de[/FONT]
          [FONT=Comic Sans MS]
          [/FONT][FONT=Comic Sans MS]Go and help me[/FONT]

          Kommentar


          • #6
            Da MySQL Subselects eher langsam ausführt, würde ich vermuten, dass Abraxax Lösung fixer ist.

            Kommentar

            Lädt...
            X