私はLEFT JOINを使って遊んできましたが、これまでのところ、すべてのユーザーの評価をすべて下回るクエリでSUMを得ることができるかどうかは疑問です。以下は、ログインしたユーザーが評価しているかどうかについての情報ですが、他のユーザーからの合計評価も表示したいと考えています。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. "'");
私は以下を試しましたが、何らかの理由で1つのコメント/行が返されるだけです。
$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'を追加しました。サブセレクトには、このコメントを評価する各ユーザのコメントの評価があります。全体のクエリは、それらのコメントを評価したすべてのコメントと情報を失います。結果の行を検索して、現在のユーザーが特定のコメントを評価したかどうかを確認することができます。 –
まだ運がありません。クエリにはどこかにあるユーザーIDが必要ではないでしょうか? – john