我有以下功能可以在选定的日期范围内显示项目余额
public function issueDetailReport($id,$start,$end){
$this->db->select('*,
(CASE
WHEN store_update_stock.order_status = "issue" THEN store_branch.branch_name
ELSE tbl_supplier.supplier_name
END) supplier_officer_name,
(CASE
WHEN store_update_stock.order_status = "issue" THEN store_update_stock.request_no
ELSE store_update_stock.bill_no
END) number,
(CASE store_update_stock.order_status
WHEN "issue" THEN store_update_stock_details.qty * (-1)
ELSE 0
END) quantity,
(CASE store_update_stock.order_status
WHEN "purchase" THEN store_update_stock_details.qty
ELSE store_update_stock_details.qty
END) purchase,
(CASE store_update_stock.order_status
WHEN "purchase" THEN store_update_stock_details.qty
ELSE 0
END) p2,
(CASE store_update_stock.order_status
WHEN "purchase" THEN store_update_stock_details.qty
WHEN "issue" THEN store_update_stock_details.qty
END) balance
');
$this->db->from('store_update_stock');
$this->db->join('store_update_stock_details','store_update_stock.update_stock_id=store_update_stock_details.update_stock_id', 'inner');
$this->db->join('store_branch','store_update_stock.branch_id=store_branch.branch_id', 'left' );
$this->db->join('tbl_supplier','store_update_stock.supplier=tbl_supplier.supplier_id', 'left');
$this->db->join('store_item','store_update_stock_details.item=store_item.item_id', 'left');
$this->db->where("store_update_stock.status='1' and store_item.item_id=$id");
$this->db->where("store_update_stock_details.qty <> 0");
if($start!=NULL && $end!=NULL)
$this->db->where("store_update_stock.billed_date BETWEEN '$start' AND '$end'");
$this->db->order_by('store_update_stock.billed_date','ASC');
$q=$this->db->get();
if($q->num_rows()>0){
return $q->result();
}
return false;
}
没关系。该功能正在运行。但我想通过以下视图使用“$start”在任何选定日期获取“p2”下的余额。
相关代码在这里:
(CASE store_update_stock.order_status
WHEN "purchase" THEN store_update_stock_details.qty
ELSE 0
END) p2,
通过运行此代码,p2 下有“0”出局。然后,我将代码更改如下:
(CASE store_update_stock.order_status
WHEN "purchase" AND store_update_stock.billed_date '<= $start' THEN store_update_stock_details.qty
ELSE 0
END) p2,
但是代码输出语法错误
您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,了解在“”附近使用的正确语法<= $start" THEN store_update_stock_details.qty ' at line 14
可能出了什么问题?有人可以帮忙吗?
你的报价放错地方了
WHEN "purchase" AND store_update_stock.billed_date <= '$start'