2016-03-29 24 views
0

Ich habe zwei MySQL-Tabellen für Kartenspiele Management zurückzukehren:Der Versuch, Werte aus einer anderen Tabelle

Die erste, Spiele Tabelle:

ID ATeam BTeam Player1 Player2 
001 T1 T2 1  2 

gibt es eine andere Tabelle (Spieler-Tabelle) mit Spieler-ID und Namen :

ID Name 
1 Dave 
2 Martin 

Was alle Spiele erhalten eine MYSQL SELECT zu tun ist mit ich versuche, wo player1 (zum Beispiel ID-Spieler = 1) derzeit, ernannt wird und den Namen des Rück Spieler, nicht die ID. Um dies zu erreichen, muss ich Spieler Tabelle abfragen, aber ich bin mir nicht sicher, was zu verwenden: INNER JOIN vielleicht?

sollte das Ergebnis sein:

001 T1 T2 Dave Martin 

Statt

001 T1 T2 1 2 

Jede Idee?

Danke!

Antwort

2

, dass eine einfache Join-Abfrage:

SELECT m.ID, m.ATeam, m.BTeam, p1.Name, p2.Name 
FROM Matches AS m 
JOIN Players AS p1 ON m.Player1 = p1.ID 
JOIN Players AS p2 ON m.Player2 = p2.ID 
WHERE m.Player1 = ? 
+0

gelassen wird, kann eine von einer besseren Idee für den Fall kommen würde ' Player1' oder 'Player2' Wert fehlt auf' Matches' –

+0

wow es funktioniert, sorry ich weiß, es ist eine einfache Frage, aber ich bin nicht vertraut mit SQL ... – Hmorv

+0

Ich musste Left Join verwenden, aber ich habe nur Ihre Abfrage kopiert und es kommt zurück manchmal player1 Name auf player2 Feld und umgekehrt? – Hmorv

1
select m.id, m.ATeam, m.BTeam, p1.name, p2.name from matches m inner join player p1 inner join player p2 on m.player1 = p1.id and m.player2 = p2.id; 
1

Gleiche wie @Giorgos Betsos Antwort, aber die Verwendung von LEFT JOIN

SELECT Matches.ID, Matches.ATeam, Matches.BTeam, p1.Name, p2.Name 
FROM Matches 
LEFT JOIN Players AS p1 ON (Matches.Player1 = p1.ID) 
LEFT JOIN Players AS p2 ON (Matches.Player2 = p2.ID) 
Verwandte Themen