2017-01-15 4 views
2

にパラメータで動作していない私は、3つのテーブルは以下のようになります:(requirement_idでtest_caseテーブルでrefenced)GROUP_CONCATはCodeIgniterのとPHP

test_case

id project_id  requirement_id 
1  5    11,12 
2  4    12,13 
3  5    10,12 

task_categories

id  name 
10  ten 
11  eleven 
12  twelve 
13  thirtien  

プロジェクト(PROJECT_IDでtest_caseテーブルでrefenced)

id name 
4  P1   
5  P2  

今、私はPROJECT_ID = 5のようにパラメータを渡すと、出力は以下のようになりたくて、条件場所でクエリを作成したい:

id project_name  requirement_name 
1  P2    eleven,twelve 
3  P2    ten,twelve 

は、私が試しました私のモデルに次のコード:それはGROUP BYを使用しながら、非集計列を選択することになるので、

public function display($project_id) { 
    $sql = " 
     SELECT i.id as id, i.project_id as project_id, requirement_id, GROUP_CONCAT(c.name SEPARATOR '\n <br>*') as req_name, p.id as projects_id FROM test_case i, task_categories c, projects p 
     WHERE FIND_IN_SET(c.id, i.requirement_id) AND i.project_id = $project_id 
     GROUP BY i.id"; 

    $query = $this->db->query($sql); 
    return $query->result(); 
} 

答えて

1

あなたの現在のアプローチは、問題を抱えています。ここでは動作するはずクエリは次のとおりです。

上記のクエリで
SELECT t1.id, 
     COALESCE(t2.project_name, 'NA') AS project_name, 
     t1.req_name 
FROM 
(
    SELECT t.id, 
      t.project_id, 
      GROUP_CONCAT(tc.name SEPARATOR '\n <br>*') AS req_name 
    FROM test_case t 
    INNER JOIN task_categories tc 
     ON FIND_IN_SET(tc.id, t.requirement_id) > 0 
    GROUP BY t.id, t.project_id 
) t1 
LEFT JOIN projects t2 
    ON t1.project_id = t2.id 

、私はすべてのidの組み合わせ、project_id、およびその要件のリストを取得するために、サブクエリで一緒にtest_casetask_categoriesに参加します。次に、別のLEFT JOINを使用して、projectsテーブルからプロジェクト名をインポートします。

+0

ありがとうございます。それは働いている。 – user7421798