以下のように2つのテーブルがあります
forum_t (forum_id PK, question,description).
forum_answer (forum_answer_id PK,comment,forum_id).
これら 2 つのテーブルを組み合わせて、特定の forum_id (最初のテーブルのプライマリ キーと 2 番目のテーブルの外部キー) の質問、説明、およびコメントを取得する結果が必要です。
質問ごとに本当に1行を取得したい場合は、ある種の集計関数を使用する必要があります。
最初にカウント(質問ごとの回答の数)。
select q.forum_id, q.question, q.description, count(*) as answer_count
from forum_t q
inner join forum_answer a on (q.forum_id = a.forum_id)
where q.forum_id between 1 and 10 -- first 10 questions
group by q.forum_id
実際の回答が必要な場合は、group_concatを使用してまとめることができます
select
q.forum_id
, q.question
, q.description
, count(*) as answer_count
, group_concat(a.comment) as comments_in_csv_form
from forum_t q
inner join forum_answer a on (q.forum_id = a.forum_id)
where q.forum_id between 1 and 10 -- first 10 questions
group by q.forum_id
これで、phpまたはクライアントサイドで使用する言語を使用してコメントを展開できます。
参照:http ://dev.mysql.com/doc/refman/5.5/en/group-by-functions.html#function_group-concat
SELECT question,description,comment
FROM
forum_t
INNER JOIN
forum_answer
ON forum_t.forum_id=forum_answer.forum_id
WHERE
forum_t.forum_id={your forum id}
重複を削除するには、DISTINCT
キーワードを使用しますが、多くの回答やコメントがある可能性があるため、各質問ごとに 1 つのレコードを取得することはできません。
SELECT DISTINCT F.forum_id,F.question,F.description,A.comment
FROM forum_t F INNER JOIN forum_answer A on F.forum_id = A.forum_id
WHERE F.forum_id = 1