LEFT JOIN을 가지고 놀았으며 모든 질문의 합계를 지금까지의 쿼리에서 모든 사용자에게 제공 할 수 있는지 궁금합니다. 아래의 정보는 로그인 한 사용자가 평가했는지 여부에 대한 정보이지만 다른 사용자의 총 평점도 표시하려고합니다.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이 필요합니까?
이것은 지금까지 가장 가까이에 온 것 같습니다. 내가 필요한 기능은 현재 사용자가 댓글을 평가 한 경우 표시하고 해당 댓글을 평가 한 모든 사용자의 총 위/아래 평점을 표시하는 것입니다. 'user_id =' ". $ user_id_var." ''를 삽입하거나 제거하는 것은 둘 중 하나를 얻는 것처럼 보이지만 둘 다를 가져 오는 것 같습니다. – john
편집 된 쿼리를 확인하십시오 :'group by comment_id, user_id'를 추가했습니다. 따라서 subselect에서이 코멘트의 등급을 매기는 각 사용자의 의견 등급을 얻었습니다. 전체 질의는 해당 코멘트를 평가 한 모든 코멘트와 정보를 사용자에게 제공해야합니다. 그런 다음 결과 행에서 현재 사용자가 특정 주석을 평가했는지 여부를 확인할 수 있습니다. –
아직 운이 없습니다. 쿼리에 사용자 ID가 필요하지 않을까요? – john