0

テーブルからIDを除外したいのですが、うまくいかないようです。

これは、2 つのテーブルからデータを取得する CodeIgniter データテーブルです。

Warehouse_id 2 からデータを除外したい

    function getdata()
    {
            $this->load->library('datatables');
            $this->datatables->select("products.id as productid, image, code, name, size, color, type, gender, price, (CASE WHEN sum(warehouses_products.quantity) Is Null THEN 0 ELSE sum(warehouses_products.quantity) END) as totalQuantity");
            $this->datatables->from('products');
            $this->datatables->join('warehouses_products', 'products.id=warehouses_products.product_id', 'left');
            $this->datatables->where('warehouses_products.warehouse_id !=', '2');
            $this->datatables->group_by("productid");

      echo $this->datatables->generate();
      }

エラーは次のとおりです。

Fatal error: Call to a member function num_rows() on a non-object in /system/database/DB_active_rec.php on line 990
4

2 に答える 2

0

参加後、どこに来る必要があります。mysql selectのリンク
また、「datatables」の実装はわかりませんが、where メソッドで一重引用符が欠落していると思います。

「codeigniter」の例を調べましたが、その例では次のようになります。

$this->db->where('name', $name); 
$this->db->where('email', $email); 

Custom key or value method 

$this->db->where('name !=', $name); 
// Produces WHERE 'name' != '$name' 

したがって、あなたの where メソッドは

$this->datatables->where('warehouses_products.warehouse_id !=', '2');
于 2013-02-02T14:31:32.280 に答える
0

引用符などを正しく使用していると仮定すると... where ビットが間違っているように見える場合は、完全な where sql とフィールド値に単一引用符を使用するために "" を使用します... また、id は整数であるため、引用符を実際に囲む必要はありません。

製品が倉庫 ID 2 にある場合でも製品 ID でグループ化しているため、その製品が他の倉庫に存在する場合は除外されません。

したがって、倉庫 ID 2 にあるすべての製品を除外する場合は、「product_id not in (Select * from products where Warehouse=id = 2)」の行に沿って、where 句でサブセレクトを使用する必要があります。

あなたが本当に達成しようとしていることに大きく依存します

于 2013-02-02T14:41:11.210 に答える