2012-02-23 14 views
1

質問タグ、タグ、質問、およびユーザーの4つのテーブルがあります。多くのテーブルから情報を取得する

質問構造は以下の通りである:q_id、q_title、q_content、q_date、q_author(ユーザテーブルからID )。

タグの構造は、tag_id、tag_name、tag_descriptionです。

Question_tags構造体は:id、tag_id、q_idです。

すべての質問とすべての質問タイトルとそのタグの横に並べる必要はありません。私は今までこれを考え出した:

$this->db->join('users', 'q_author = users.id', 'left'); 
$this->db->order_by('q_id', 'desc'); 
$this->db->limit($per_page, $offset); 
$query = $this->db->get('questions'); 

しかし、タグについてのアイデアはありません。 (CodeIgniterも使用しています)

P.S.すべての質問は複数のタグを持つことができます。あなたがメインのクエリで重複データを返す避けたい場合は、別のクエリを持っている必要がありますCodeIgniterの-2

+1

'question.q_id = question_tags.q_id'と' question_tags.tag_id = tags.tag_id'と 'GROUP BY(q_id) 'の間にあるLEFT JOINとJOINの間で' GROUP_CONCAT(tag_name) '(私はMySQLでクエリを書くことができましたが、codeigniterでどのように処理されたのかわかりません)。それはあなたの情報と各質問のタグ名のコンマ区切りリストを返します。 –

+0

私はこれを試しました: 'SELECT *、GROUP_CONCAT(tags.tag_name)質問からLEFT JOINユーザをオンにするq_author = users.id LEFT JOIN question_tags ON questions.q_id = question_tags.q_id LEFT JOINタグをONにするquestions.q_id = question_tags.q_id GROUP BY questions.q_id'を返しますが、この質問ではなくすべてのタグを返します。私のミスはどこですか? –

+1

2番目の 'LEFT JOIN'(' tags'へ)は 'ON tags.tag_id = questions_tags.tag_id'でなければなりません。 –

答えて

1

データベーステーブルタグ。各質問に関連するタグがたくさんあるので、質問結果をループし、各ループの繰り返し内でその質問のタグをクエリしてください。

関連する問題