-1

3 番目のテーブルを追加しようとすると、少し問題が発生します。

これはテーブル構造です:

products = 
id  name    code
5   product1    002
522 product1    002

warehouses = 

id  code    name    address     city
1   store1  store1  store1    store1

warehouses_products = 

id  product_id  warehouse_id    quantity
2       5           1             -3
3       522         1             -2
4       446         1              0

データを取得する関数は次のとおりです。

    $this->load->library('tables');
           $this->tables
                ->select("products.id as productid, name, code (CASE WHEN sum(warehouses_products.quantity) Is Null THEN 0 ELSE sum(warehouses_products.quantity) END) as totalQuantity, warehouses.name");
                $this->tables->from('products');
                $this->tables->join('warehouses_products', 'products.id=warehouses_products.product_id', 'left');
                $this->tables->join('warehouses', 'warehouses_products.id=warehouses.warehouse_id', 'left');

$this->tables->group_by("products.id");
$this->tables->unset_column('productid');

echo $this->tables->generate();

どんな助けでも大歓迎です

4

1 に答える 1

1

あなたの結合クエリはうまく見えます..ちょうど私が気づいたことです(着用していない場合) 選択クエリの,代わりに..これを試してください.

これを交換して..

$this->tables->select("table1.id as table1id, column1, column2, table2.column1, table3,column2")

$this->tables->select("table1.id as table1id, column1, column2, table2.column1, table3.column2") //notice the '.' here table3.column2

また、実行しているクエリが正しいかどうかを確認 (確認) します。CI で最後に実行したクエリを出力することでこれを行うことができます。

 echo $this->db->last_query();exit; //after query is made ..

そしてあなたの更新された質問..結合が正しくありません..

更新しました

これ

$this->tables->join('table2', 'table3.product_id=table1.id', 'left');
$this->tables->join('table3', 'table2.id=table3.warehouse_id', 'left');

と置換する

$this->tables->join('table3', 'table3.product_id=table1.id', 'left'); //join the thrid table first
$this->tables->join('table2', 'table2.id=table3.warehouse_id', 'left');//and thn the second table with third tables warehouse_id
于 2013-01-21T11:07:27.240 に答える