2016-06-07 49 views
0

所以我有一個鏈接表和這些鏈接的投票表。因此,例如,鏈接google.co.uk在鏈接表中有一條記錄,然後在投票表中可以有四個投票記錄,每個記錄的得分爲-1,1或2。我已經完成了對每個鏈接的投票進行總結的這個查詢,但是有可能將同一個查詢中的所有鏈接的所有得分相加,所以用戶有一個得分?是否有可能在此查詢中獲得overall_score的總和?

SELECT *, SUM(v.vote_score) AS overall_score 
FROM mdl_link_critic_links l 
    JOIN mdl_link_critic_votes v on l.id = v.link_id 
WHERE l.user_id = '3' 
GROUP BY l.id 

結果是一樣

google.co.uk, user_id 3, overall_score 3 
ebay.co.uk , user_id 3, overall_score 4 
stackoverflow.com, user_id, 3, overall_score 10 

,我想總結所有的總分,所以在這種情況下,這將是17

+0

* 「所以在這種情況下,這將是17」 * - 你的意思是16. 3,3,3,4和3讓16,不17. ;-) –

+0

不,總和領域overall_score,3 + 4 + 10使17 :) – Rich

+3

'WITH ROLLUP'它會給你null,null,17' – splash58

回答

0

什麼子查詢?它看起來像這樣或多或少:

SELECT x.user_id, SUM(overall_score) AS user_score 
FROM (
    SELECT *, SUM(v.vote_score) AS overall_score 
    FROM mdl_link_critic_links l 
    JOIN mdl_link_critic_votes v on l.id = v.link_id 
    GROUP BY l.id 
) AS x 
GROUP BY x.user_id; 
0
SELECT l.id, l.name, v.user_id, v.vote_score AS user_score, o.overall_score 
FROM mdl_link_critic_links l 
JOIN mdl_link_critic_votes v ON v.link_id = l.id 
JOIN (SELECT v.link_id, SUM(v.vote_score) AS overall_score 
     FROM mdl_link_critic_votes v 
     GROUP BY v.link_id) o ON o.link_id = l.id 
相關問題