Hallo liebes Forum
Ich erarbeite mir derzeit ein Ligenscript. Mit dem PHP-Script habe ich bereits einen generierten Spielplan in eine Datenbank von PHPmyAdmin geladen. Das ERD dazu sieht folgendermaßen aus:
Tabelle "spiele":
Problem: Ist es überhaupt möglich, das 2 FS einer Tabelle den gleichen PS haben? (siehe rote Markierung)
Mein Ziel ist es, dass ich per JOIN-Abfrage die tid(Team-ID) zu den jeweiligen Teams zuordnen kann. Ich habe selber schon viele JOIN-Varianten probiert, dennoch gab es kein erfolgreiches Ergebnis, so dass die beiden Teams namentlich erscheinen. Habe schon überlegt Gast und Heim-Team in seperaten Tabellen unterzubringen, aber da hätte ich in beiden Tabellen die selben Teams stehen, was auch nicht Sinn der Normalisierung ist.
Also wer Lösungsansätze hat, kann die gern Posten.
Ankündigung
Einklappen
Keine Ankündigung bisher.
[Erledigt] ERD: Tabelle->2Fremdschlüssel->gleicher PS?
Einklappen
Neue Werbung 2019
Einklappen
X
-
benschworld hat ein Thema erstellt [Erledigt] ERD: Tabelle->2Fremdschlüssel->gleicher PS?.[Erledigt] ERD: Tabelle->2Fremdschlüssel->gleicher PS?
-
Lösung durch testen schon gefunden:
Code:$read_cursor = mysql_query("SELECT t1.teamname AS Heimteam, t2.teamname AS Auswaertsteam FROM spiele JOIN teams t1 ON t1.tid=spiele.heim JOIN teams t2 ON t2.tid=spiele.gast"); while($result = mysql_fetch_array($read_cursor)) { echo $result["Heimteam] . " - " . $result["Auswaertsteam"] . "<br>\n"; }
-
Uh stimmt, an die Aliase hatte ich nicht gedacht. Habe dein Beispiel jetzt so angewendet wie du es geschrieben hast. Funktioniert genau so wie ich wollte.
Code:SELECT t1.teamname, t2.teamname FROM spiele JOIN teams t1 ON t1.tid=spiele.heim JOIN teams t2 ON t2.tid=spiele.gast
EDIT:
Jetzt ist mir dennoch ein Problem aufgefallen bei der Ausgabe in PHP. Ist es möglich, dass PHP sich schwer tut mit den Alias'en?
Mir werden nur die " - " angezeigt, aber keine Teamnamen!
Code:$read_cursor = mysql_query("SELECT t1.teamname, t2.teamname FROM spiele JOIN teams t1 ON t1.tid = spiele.heim JOIN teams t2 ON t2.tid=spiele.gast"); while($result = mysql_fetch_array($read_cursor)) { echo $result["t1.teamname"] . " - " . $result["t2.teamname"] . "<br>\n"; }
Einen Kommentar schreiben:
-
Ein Gast antworteteZitat von benschworld Beitrag anzeigenAuf mein Beispiel angewendet, sieht es so aus, funzt aber nicht:
Code:SELECT spiele.heim, spiele.gast FROM spiele JOIN teams t1 ON t1.tid=spiele.heim JOIN teams t2 ON t2.tid=spiele.gast
Funzt es jetzt...?
Grüße
Thomas
Einen Kommentar schreiben:
-
Zitat von benschworld Beitrag anzeigenMeines erachtens sieht es so aus, als ob du denkst, dass in meiner "teams"-Tabelle jeweils einmal Heim und Gast-Team stehen, also dann jeder Verein 2mal drin steht.
Einen Kommentar schreiben:
-
Danke an Thomas erstmal, aber ich kann deine Art wie du es geschrieben hast nicht auf meins Anwenden. Meines erachtens sieht es so aus, als ob du denkst, dass in meiner "teams"-Tabelle jeweils einmal Heim und Gast-Team stehen, also dann jeder Verein 2mal drin steht. Auf mein Beispiel angewendet, sieht es so aus, funzt aber nicht:
Code:SELECT spiele.heim, spiele.gast FROM spiele JOIN teams ON teams.tid=spiele.heim JOIN teams ON teams.tid=spiele.gast
Einen Kommentar schreiben:
-
Ein Gast antworteteDu kannst jederzeit mehrere Foreign Key Spalten (=FS) auf eine Tabelle auf den Primary KEY (=PS) referenzieren lassen .
Die SQL-Abfrage könnte dann so aussehen (wenn ich mich nicht vertippt habe):
Code:SELECT th.teamname, tg.teamname FROM spiele s JOIN teams th ON th.tid = s.heim JOIN teams tg ON tg.tid = s.gast;
Thomas
Einen Kommentar schreiben:
Einen Kommentar schreiben: