2

誰でもこのクエリをアクティブ レコードの codeigniter に変換できますか???

 SELECT  b.name,
    SUM(CASE WHEN c.size = 'S' THEN 1 ELSE 0 END) S,
    SUM(CASE WHEN c.size = 'M' THEN 1 ELSE 0 END) M,
    SUM(CASE WHEN c.size = 'L' THEN 1 ELSE 0 END) L,
    SUM(CASE WHEN c.size = 'XL' THEN 1 ELSE 0 END) XL
   FROM    orderTB a
    INNER JOIN productTB b
        ON a.id_product = b.id_shirt
    INNER JOIN sizeTB c
        ON a.id_size = c.id_size
GROUP BY b.name

私はこのように試しました

  function get()
 {
  $this->db->select("b.name,SUM(CASE WHEN c.size ='S' THEN 1 ELSE 0 END) as S,SUM(CASE    WHEN c.size = 'M' THEN 1 ELSE 0 END) as M,SUM(CASE WHEN c.size = 'L' THEN 1 ELSE 0 END) as   L,SUM(CASE WHEN c.size = 'XL' THEN 1 ELSE 0 END) as XL");

 $this->db->from('order');
 $this->db->join('ukuran','order.id_size=ukuran.id_size');
 $this->db->where('date',$date);
 return $this->db->get();
 }

しかし、それは間違っています

4

1 に答える 1

10

これを試してみて、私に知らせてください。

$this->db->select("b.name,SUM(CASE WHEN c.size = 'S' THEN 1 ELSE 0 END) S,SUM(CASE WHEN c.size = 'M' THEN 1 ELSE 0 END) M,SUM(CASE WHEN c.size = 'L' THEN 1 ELSE 0 END) L,SUM(CASE WHEN c.size = 'XL' THEN 1 ELSE 0 END) XL", FALSE );
$this->db->from('orderTB a');
$this->db->join('productTB b','a.id_product = b.id_shirt','inner');
$this->db->join('sizeTB c','a.id_size = c.id_size','inner');
$this->db->group_by('b.name');

資料はこちらから

$this->db->select() は、オプションの 2 番目のパラメーターを受け入れます。FALSE に設定すると、CodeIgniter はフィールドまたはテーブル名をバッククォートで保護しようとしません。これは、複合 select ステートメントが必要な場合に便利です。

編集

FALSEselectステートメントに追加するだけです

function get() {
    $this->db->select("b.name,SUM(CASE WHEN c.size ='S' THEN 1 ELSE 0 END) as S,SUM(CASE    WHEN c.size = 'M' THEN 1 ELSE 0 END) as M,SUM(CASE WHEN c.size = 'L' THEN 1 ELSE 0 END) as   L,SUM(CASE WHEN c.size = 'XL' THEN 1 ELSE 0 END) as XL",FALSE);

    $this->db->from('order');
    $this->db->join('ukuran','order.id_size=ukuran.id_size');
    $this->db->where('date',$date);
    return $this->db->get();
}
于 2013-01-01T11:50:39.697 に答える