2017-08-10 19 views
-1

我完全失去了。MySQL:加入三張表並獲得計數

爲我的合作團隊工作一個數據庫。播放器,火柴,可用球員一場比賽,爲比賽選擇球員,等.....

我想第一個重要步驟是能夠播放器,匹配相結合,可用來獲得列表與女性人數和男性人數相匹配。

這裏是我的表:

玩家(ID,性別,姓名,....)

id Gender Name 
1 M  David 
2 M  Alberto 
3 F  Alison 
4 F  Karen 
5 F  Callie 
6 M  Stephan 

比賽(ID,...)

id  
    1 
    2 
    3 

可用( id,matchID,playerID)

id matchID PlayerID 
    1  1   1 
    2  1   8 
    3  1  11 
... ...  ... 
    16 2   1 
    17 2   2 
    18 2  15 
... ...  ... 
    26 3   6 
    27 3   7 
    28 3  18 

Desired Res ULT

Match  Women  Men  Total 
    1   5  10  15 
    2   4  6  10 
    3   6  10  16 
...  ...  ...  ... 

下面是我得到的最接近(就在今天上午):

select m.id, p.gender 
    from matches m 
    inner join available a on m.id = a.matchid 
    inner join players p on p.id = a.playerid 
+1

我覺得你還是應該發佈您的代碼爲止。學習爲什麼你的代碼不起作用比告訴你什麼會起作用要好得多。 – kaineub

+0

這個問題應該用於獲取不同支數會有所幫助:https://stackoverflow.com/questions/33139000/multiple-query-same-table-but-in-different-columns-mysql/33139182#33139182 – Barmar

+0

這應該是有幫助當你加入多個表時進行彙總:https://stackoverflow.com/questions/37199736/a-count-for-each-join-optimisation – Barmar

回答

0

上午清晰度:

select m.id, 
    sum(case when p.gender="Male" then 1 else 0 end) "Males", 
    sum(case when p.gender="Female" then 1 else 0 end) "Females", 
    count(p.gender) "Total" 
from matches m 
inner join available a on m.id = a.matchid 
inner join players p on p.id = a.playerid 
group by m.id