2012-09-05 101 views
0

在寫這個查詢時,我一直在撞牆撞了幾個小時。我有兩張桌子。我想選擇一個遊戲在某個日期播放的次數,但只計算每個用戶一個遊戲的次數。例如坪是在2011年打了3次,但只有2個用戶,所以我想回到一共是2多列Mysql計數

sessions表

DATE GAME_ID  USER_ID 
2011  1   1 
2011  2   1 
2011  1   1 
2011  1   2 
2011  2   2 
2012  1   1 
2012  1   1 

遊戲臺

ID  NAME 
1  PING PONG 
2  TENNIS 

我迄今爲止真的很掙扎。此片段返回唯一的時間,但不限於日期。

SELECT DISTINCT GAME_ID,USER_ID FROM SESSIONS 

我知道如何查詢限制日期等,但與整個兩列計數掙扎,我必須通過上述查詢到的計數功能?

任何幫助將不勝感激!

感謝

回答

1

你想要做什麼是計數的不同用戶在給定日期:

select g.name, count(distinct s.user_id) as NumUsers 
from sessions s join 
    games g 
    on s.game_id = g.id 
where date = <whatever your date> 
group by g.name 
+0

謝謝你的幫助,你保存我的電腦試圖飛行! – scalabilitysolved

0

使用內嵌查詢:

select DATE, GAME_ID, count(*) from (
SELECT distinct s.DATE, s.GAME_ID, s.USER_ID 
FROM SESSIONS s 
INNER JOIN GAMES g ON s.GAME_ID =g.ID) inn 
group by DATE, GAME_ID 

如果需要,請在DATE中將WHERE添加到內聯查詢中。

0

該查詢,以顯示用戶在某一特定日期起到了特定的遊戲數量,

SELECT GAME_ID, USER_ID, COUNT(DISTINCT USER_ID) FROM SESSIONS 
GROUP BY DATE, GAME_ID, USER_ID; 

與該查詢顯示,而不是顯示game_id的這個時候,同樣的結果,我們顯示game_name

SELECT Q2.USER_ID, Q2.nbr_user, GAMES.NAME FROM GAMES, 
     (SELECT GAME_ID, USER_ID, COUNT(DISTINCT USER_ID) as nbr_user 
      FROM SESSIONS 
      GROUP BY DATE, GAME_ID, USER_ID) Q2 
WHERE GAMES.ID = Q2.GAME_ID