我有兩個表,一個叫玩家,一個叫匹配。確定比賽獲勝者並加入名字表
的球員表包含2列:ID,名稱
的比賽表包含5列:PLAYER1,player2,goalsforplayer1,goalsforplayer2,matchid
尋找合適的查詢來獲取名稱(不是球員ID)和比賽結果,理想情況下比較Goalforplayer1和goalsforplayer2以獲得每場比賽的勝者或平局。基本上製作一個結果列表。
是這樣的可能使用mysql查詢?
我有兩個表,一個叫玩家,一個叫匹配。確定比賽獲勝者並加入名字表
的球員表包含2列:ID,名稱
的比賽表包含5列:PLAYER1,player2,goalsforplayer1,goalsforplayer2,matchid
尋找合適的查詢來獲取名稱(不是球員ID)和比賽結果,理想情況下比較Goalforplayer1和goalsforplayer2以獲得每場比賽的勝者或平局。基本上製作一個結果列表。
是這樣的可能使用mysql查詢?
你應該使用兩個內部聯接的球員
select
b.name as nameplayer1
, c.name as nameplayer2
, a.goalsforplayer1
, a.goalsforplayer2
, a.matchid
from matches as a
inner join players as b on a.player1 = b.id
inner join players as c on a.player2 = c.id
這應該是你在找什麼(爲了讓玩家列表,它們的總比賽結果),並應指導您正確的方向:
SELECT p.*,
(COUNT(CASE WHEN m1.goalsforplayer1 > m1.goalsforplayer2 THEN 1 ELSE NULL END) +
(COUNT(CASE WHEN m2.goalsforplayer2 > m2.goalsforplayer1 THEN 1 ELSE NULL END)
) AS wins
FROM players p
INNER JOIN matches m1 ON p.id = m1.player1
INNER JOIN matches m2 ON p.id = m2.player2
GROUP BY p.id
加入對matches
表,並由ID分組。使用聚合函數(COUNT
)來獲得玩家贏得的總數。如果你想繪製,只需修改查詢。
如果你正在尋找簡單的結果(從每邊播放器),然後使用此:
SELECT p1.name AS player1, p2.name AS player2, m.goalsforplayer1, m.goalsforplayer2, m.matchid
FROM matches m
INNER JOIN players p1 ON p1.id = m.player1
INNER JOIN players p2 ON p2.id = m.player2
更改匹配表設計,似乎是違反正常化標準。 – Jordon
@ShivaShinde這個設計是好的 – Strawberry
如果下面的答案之一回答你的問題,這個網站的工作方式的作品,你會「接受」的答案,更在這裏:[*當有人回答我的問題,我應該做什麼?* ](http://stackoverflow.com/help/someone-answers)。但前提是你的問題確實得到了回答。如果不是,請考慮在問題中添加更多詳細信息。 – FrankerZ