2012-05-04 81 views
1

我一直在玩LEFT JOINs,我想知道是否有可能在下面的查詢中獲得所有用戶的所有評分的總和。以下是獲取登錄用戶是否評分的信息,但我也希望顯示來自其他用戶的總評分。在LEFT JOIN的所有行上的SUM()?

$query = mysql_query(" 
SELECT com.comment, com.comment_id, r.rate_up, r.rate_down 
FROM comments com 
LEFT JOIN ratings r 
ON com.comment_id = r.comment_id 
AND r.user_id = '" . $user_id_var . "' 
WHERE page_id = '" . $category_id_var. "'"); 

我試過以下,但我只得到一個評論/行由於某種原因返回。

$query = mysql_query(" 
SELECT com.comment, com.comment_id, 
r.rate_up, r.rate_down 
SUM(r.rate_up) AS total_up_ratings, 
SUM(r.rate_down) AS total_down_ratings, 
FROM comments com 
LEFT JOIN ratings r 
ON com.comment_id = r.comment_id 
AND r.user_id = '" . $user_id_var . "' 
WHERE page_id = '" . $category_id_var. "'"); 

任何幫助表示讚賞。我需要一種不同的JOIN嗎?

回答

0

如果您在SQL中使用聚合函數(如SUM()),則需要相應的GROUP BY子句。

在你的情況下,最有可能的將是com.comment_id;這會給你每comment_id所有評級的總和:

0

你可以做這樣的事情:

SELECT 
    com.comment, 
    com.comment_id, 
    Total.total_down_ratings, 
    Total.total_up_ratings 
FROM comments com 
LEFT JOIN 
(
SELECT 
    SUM(r.rate_up) AS total_up_ratings, 
    SUM(r.rate_down) AS total_down_ratings, 
    r.comment_id 
FROM 
    ratings r 
GROUP BY 
    r.comment_id 
) AS Total 
ON com.comment_id = Total.comment_id 
AND r.user_id = '" . $user_id_var . "' 
WHERE page_id = '" . $category_id_var. "'" 
1

您是否嘗試過在你的SQL結束使用GROUP BY page_id

0

我不知道,如果你正在爲目的,複製註釋行,但如果沒有,你可以嘗試寫子選擇了這樣的評級:

select comment_id, user_id, sum(rate_up) as sum_rate_up, 
sum(rate_down) as sum_rate_down from ratings 
group_by comment_id, user_id; 

,然後將其包含在你的連接查詢:

select com.comment, com.comment_id, r.user_id, r.sum_rate_up, 
r.sum_rate_down from comments com 
left join (select comment_id, user_id, sum(rate_up) as sum_rate_up, 
sum(rate_down) as sum_rate_down from ratings 
group_by comment_id, user_id) as r 
on com.comment_id = r.comment_id where page_id = '".$category_id_var."' 
+0

這似乎到目前爲止是最接近的。我需要的功能是顯示當前用戶是否對評論進行了評分,以及評論過評級的所有人的總評分和評分。插入或刪除'where user_id ='「。$ user_id_var。」''似乎得到一個或另一個......但不是兩個。 – john

+0

查看已編輯的查詢:我已經添加了'by comment_id,user_id'組,因此在您選擇評論後,您對每個評論此評論的用戶都有評論。整個查詢應該爲您提供評論和信息的所有評論和信息。然後,您可以在結果行中搜索當前用戶,以查看他是否對特定評論進行了評級。 –

+0

仍然沒有運氣。查詢不需要那裏的用戶ID在某處? – john