0

quotes というテーブルがあります。

id date       content
80 2012-06-03 This is the first quote.
81 2012-06-05 Lorem Ipsum.

そして、評価と呼ばれるテーブル:

rid uid qid rating
1   4   80  -1
2   4   81  1

uid フィールドは、その評価を行ったログイン ユーザーを参照します。見積もり Web サイトはログイン ユーザーのみが利用できます。現在のユーザーに見積もりを表示できるようにしたいと考えています。これには、見積もりの​​現在の評価、見積もりを評価したかどうか、評価した場合は何を評価したかを示す情報が含まれます。それとして。評価は -1 または 1 のいずれかです。見積もりは、それを送信したユーザーには関連付けられません。

引用を 1 つだけ取得する場合は、次のクエリを実行します (例: 引用 80 とユーザー 4)。

SELECT
  q.id AS qid, q.content, q.date,
  COALESCE(SUM(r.rating), 0) AS rating,
    (SELECT COALESCE(rating, 0) FROM ratings WHERE qid = 80 AND uid = 4 LIMIT 1)
      AS user_rated
  FROM quotes q
  LEFT JOIN ratings r ON q.id = r.qid
  WHERE q.id = 80
  GROUP BY q.id

複数の引用を表示するように変更するにはどうすればよいですか (つまり、引用 ID 80 だけでなく)、user_rated と評価情報は保持しますか?

どうもありがとう!

4

1 に答える 1

1
SELECT
  q.id AS qid,
  q.content,
  q.date,
  COALESCE(SUM(r.rating), 0) AS rating,
  COALESCE(SUM(IF(r.uid = 4, r.rating, NULL)), 0) AS user_rated
FROM quotes q
LEFT JOIN ratings r ON q.id = r.qid
GROUP BY q.id
于 2012-07-18T12:28:17.000 に答える