1

クロス集計情報に基づいて 2 つの列を生成しようとしています。具体的には、ディスカッションフォーラムで質問をした学生を選択して「質問者」列に入れ、質問に答えた学生を選択して「回答者」列に入れようとしています。クエリは個別に機能しますが、次のようにカンマで結合すると、次の構文エラーが発生します。

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

構文エラー:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '
group_concat(DISTINCT author_id SEPARATOR " ") AS answerers
FROM students
WHERE' at line 12

質問者の列と質問に答える列を取得するにはどうすればよいですか? このエラーは、SELECT 構文の誤解によるものだと思います。

4

3 に答える 3

2

これを試してください、私はそれがあなたが望むものだと思います:

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'
于 2013-05-30T16:28:15.310 に答える
1

最初に 2 つの FROM を発行する理由がわかりません (とにかく許可されていません)。1 つのクエリで 2 つの選択を取得する場合は、次のようにします (クエリはテストされていません)。

SELECT author_id, post_type AS questioner
FROM students
WHERE post_type='question' OR post_type='answer';

1 つのステートメントで 2 つのクエリを実行する必要がある場合は、サブクエリを使用する必要があります: http://dev.mysql.com/doc/refman/5.0/en/subqueries.html

于 2013-05-30T15:24:43.590 に答える