0

私は3つのテーブルを使用しています。最初の表には、顧客からの質問が記録されています。

  customer_id   |   question   | question_id
----------------------------------------------
       58       |   question 4 |      4
       41       |   question 5 |      5
       37       |   question 3 |      3 

2 番目の表には、最初の表の質問に関連するコメントが記録されています。

    comment   | question_id   |  user
---------------------------------------
    comment 1 |      4        |    41  
    comment 2 |      5        |    58         
    comment 3 |      4        |    41  
    comment 4 |      5        |    58  
    comment 5 |      3        |    23  

3 番目の表には、このサイトのユーザーに関するデータがあります。

    user      | status
--------------------------------
     58       |      1
     41       |      1
     37       |      0 
     23       |      0 

question_id でソートされた最後の 5 つの質問のリストと、各質問に関連するコメントの総数を結果として返すクエリを作成するにはどうすればよいですか。これらの質問とコメントは、3 番目のテーブルのステータスが「1」のユーザーのみが行うことができます。

この例の結果は次のようになります。

  question   | total comments  |   user
-----------------------------------------------
 question 5  |      2          |    41
 question 4  |      2          |    58    
4

4 に答える 4

1

私はこれが正しいと合理的に確信していますが、検証するためのデータはここにありません.

SELECT questions.question, 
       count(comments.question_id) as 'total comments', 
       user.user
FROM user 
  JOIN questions on user.user = questions.customer_id
  LEFT JOIN comments on questions.question_id = comments.question_id
WHERE user.status = 1
GROUP BY comments.question_id,  questions.question, users.user
ORDER BY questions.question
LIMIT 5

質問に LEFT JOIN を使用すると、コメントが残っていない場合でも質問を表すことができます。

ご不明な点がございましたら、お知らせください。

于 2012-05-13T12:20:48.360 に答える
0
SELECT      question_id as question, count(c.comment) as 'total comments', q.customer_id as user
FROM        (SELECT * 
            FROM question
            ORDER BY question_id DESC
            LIMIT 5) as q LEFT JOIN 
            comment as c using(question_id) LEFT JOIN
            user as u using(user) 
WHERE       u.status=1 
GROUP BY    q.question_id
ORDER BY    question_id DESC
于 2012-05-13T19:01:39.567 に答える
0

それを簡単に見て、私はこれをします:

SELECT q.question_id, count(c.comment) from questions as q left join 
comments as c on q.question_id=c.question_id left join user as u on 
c.user=u.user where u.status=1 group by q.question_id
于 2012-05-13T12:20:44.907 に答える
0
SELECT question, count(*) as total_comments, T1.user 
FROM T1, T2, T3
WHERE T1.customer_id = T3.user 
  AND T3.status = 1,
  AND T1.question_id = T2.question_id
GROUP BY T2.user 
ORDER BY question_id DESC
LIMIT 5

T1、T2、T3 は、提示された順序で問題のテーブルです。

于 2012-05-13T12:20:52.217 に答える