2016-03-29 6 views
0

から値を返すようにしようと、私はカードゲームの管理のための2つのMySQLテーブルがあります。別のテーブル

最初のものは、テーブルにマッチ:

ID ATeam BTeam Player1 Player2 
001 T1 T2 1  2 

プレイヤーのIDと名前を持つ別のテーブル(プレイヤーテーブル)があります:私は何をしようとしている

ID Name 
1 Dave 
2 Martin 

はplayer1が(インスタンスID選手= 1の場合)、現在に任命されたすべての一致を取得し、プレイヤーの名前ではなくIDを返す1 MYSQL SELECTです。 これを達成するために、私は選手のテーブルを照会する必要がありますが、私は何を使用するか分からない:INNER JOINおそらく??

結果は次のようになります。

001 T1 T2 Dave Martin 

代わりの

001 T1 T2 1 2 

任意のアイデア?

ありがとうございます!

答えて

2

という単純な結合問合せ:

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

は 'の場合1で良いアイデアだろう参加残すことができる参加左Player1'または 'Player2'の値が' Matches'にありません –

+0

うわー、うまくいきませんでした。単純な質問ですが、私はSQLに慣れていません... – Hmorv

+0

左結合を使う必要がありましたが、それは戻ってきている時にはplayer1の名前がplayer2のフィールドにあり、その逆の場合もありますか? – 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

@Giorgos Betsosの答えが、使用と同じでは

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)