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

假设你的引号等是正确的...... where 位看起来错误使用 "" 作为完整的 where sql 和字段值使用单引号......同样因为 id 是一个整数,所以不需要在它周围加上引号。

由于您是按产品 ID 进行分组的,即使产品在仓库 id 2 中,如果该产品存在于任何其他仓库中,也不会被排除在外

因此,如果您想排除仓库 id 2 中的所有产品,您应该在 where 子句中使用子选择,类似于 where “product_id not in (Select * from products where warehouse=id = 2)”

很大程度上取决于您真正想要实现的目标

于 2013-02-02T14:41:11.210 回答
0

加入后应该去哪里。mysql select的链接
另外,我不知道“数据表”的实现,但我认为 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 回答