わかりました、ここに私が抱えている問題があります。ブログのコメントとそれらのコメントの評価を処理するための 2 つのテーブルがあります。ログインしたユーザーが投稿を評価するたびに、「commentrate」テーブルに新しい行が挿入されます。「commentrate」には 4 つのフィールドがあります。auto_increment、author_id、comment_id (評価されたコメントの ID 番号) に設定された ID、および 1 から 5 のスケールでの評価自体。
実際のコメントのテーブルには、commentrate テーブルの comment_id と一致する commentid フィールドがあります。
必要なのは、commentid を使用してブログ コメント テーブルの各コメントを取得し、同じ comment_id を持つすべての評価の平均に一致させる Mysql クエリです。
これの目的は、評価の高い投稿ページを作成することです。
comment_id を指定すると、comment_id と評価の平均を含む結果セットが返されるというクエリがあります。ただし、ブログ コメント テーブルの各コメント ID に対してこのクエリを機能させることはできません。そのクエリは次のとおりです。
SELECT commentrate.comment_id, AVG(commentrate.rating) from commentrate WHERE commentrate.comment_id=35
サブクエリと結合を使用してこれを実現しようとしましたが、機能しないか、1 行しか返されないか、エラー メッセージが表示されます。私が試したクエリを以下に投稿します。どんな助けでも大歓迎です。私はこれを理解するために何日も無駄に苦労しました。ありがとうございました。
SELECT bd_comments.commentid, bd_comments.comment FROM bd_comments WHERE bd_comments.commentid = ALL (SELECT commentrate.comment_id, floor(AVG(commentrate.rating)) from commentrate WHERE commentrate.comment_id=bd_comments.commentid)
エラー: #1241 - オペランドには 1 列を含める必要があります
SELECT bd_comments.commentid, bd_comments.comment FROM bd_comments WHERE bd_comments.commentid = ALL (SELECT commentrate.comment_id, floor(AVG(commentrate.rating)) from commentrate WHERE commentrate.comment_id=bd_comments.commentid)
エラー: #1241 - オペランドには 1 列を含める必要があります