0

各行がスレッド内の投稿を表し、列がスレッドを質問、回答、およびコメントに細分する出力テーブルを作成しようとしています。質問と回答の部分を下に置いたので、コメント セクションを追加する必要があります。

コードをいじって、コメント投稿者のために 3 番目の列を追加するために与えられた解決策を理解しようとしています。貼り付けたコードは、学生の ID の 1 つの列から 2 つの列を作成します。最初の列は質問を投稿したすべての学生で、2 番目の列は特定のスレッドで回答を投稿したすべての学生です。

クエリ元のテーブル:

thread_id    student_usrnm     post_type
1            iron_man          question
1            orient            answer
1            cyclops           comment
2            green_lantern     question
2            iron_man          answer
...          ....              .....

出力:

questioners     answerers      commenters
iron_man        orient         cyclops
green_lantern   iron_man

動作し、質問者と回答者を生成するコードは次のとおりです。

 SELECT s1.author_id AS questioner,
(SELECT group_concat(DISTINCT author_id SEPARATOR " ") FROM students s2 WHERE s2.post_type = 'answer' AND   s2.thread_id = s1.thread_id)  AS answerers  
 FROM students s1
 WHERE s1.post_type = 'question';

質問:

  1. s1 とは何ですか? s2 とは何ですか? これらはどのように機能しますか? それらは一時テーブルか何かですか?

  2. コメンテーター用に 3 番目の列を追加するにはどうすればよいですか? これは、3 番目の列を生成する私の哀れな試みです。

    SELECT s1.author_id AS questioner,
      (SELECT group_concat(DISTINCT author_id SEPARATOR " ") 
      FROM students s2 WHERE s2.post_type = 'answer' AND s2.thread_id = s1.thread_id) AS answerers, 
      (SELECT group_concat(DISTINCT author_id SEPARATOR " ") FROM students s3 WHERE s3.post_type = 'comment' and s3.thread_id = s1.thread_id) AS commenters,    
      FROM students s1
      WHERE s1.post_type = 'question';
    
4

1 に答える 1