2012-03-16 48 views
1

我在SQL中很新手,在這之前我只使用簡單的查詢,但現在我有一個問題。 我有兩張桌子。首先是評級MySQL加入兩個表,找到最大數量和順序

id userid value 
1 3  + 
1 2  + 
1 2  + 

其次是日記帳

id userid week day  lesson content 
1 2  1  1  6  Test! 

所以現在我有一個問題。我需要:

1)通過id加入這些表。

2)然後按評分表中的條目計數結果排序。

那麼結果一定是這樣的:

userid count 
3  1 
2  2 

如何做到這一點?感謝任何有用的東西。

+0

有沒有嘗試過任何查詢呢? – Randy 2012-03-16 20:15:10

+3

爲什麼你甚至需要'daybook'表呢? – 2012-03-16 20:15:34

+0

也許是因爲如果沒有日記帳分錄,則不應顯示相應的分級分錄...也許 – Ben 2012-03-16 20:20:45

回答

2
select daybook.userid, count(*) as count 
    from daybook, rating 
    where daybook.userid = rating.userid 
    group by daybook.userid 
    order by count desc 

但是,你甚至不真正需要的日記帳表:

select userid, count(*) as count 
    from rating 
    group by userid 
    order by count desc 
+0

我可能需要。因爲我只能得到指定ID的評分。如果我更換一個條目的ID爲1〜2,你的代碼返回數= 2的用戶id = = 2,而我只需要得到數= 1 – Uhehesh 2012-03-16 20:30:40

+0

那好吧。我添加了「where id = 1」,並且現在過濾正確。謝謝。 – Uhehesh 2012-03-16 20:38:12

1

你需要做這樣的事情:

SELECT count(id), rating.userid 
FROM rating 
JOIN daybook ON daybook.userid = rating.userid 
GROUP BY userid