SELECT g.date,g.description,g.amount AS cash,0 AS cheque FROM generalledger AS g WHERE g.type="cash" AND (g.date=@gdate OR @gdate IS NULL)
UNION ALL
SELECT gg.date,gg.description,0 AS cash, gg.amount AS cheque FROM generalledger AS gg WHERE gg.type="cheque" AND (gg.date=@gdate OR @gdate IS NULL)
我的这个查询我想从php函数设置@gdate参数值,我使用codeigniter。还有其他办法吗?
答案 0 :(得分:3)
通过让系统将查询放在一起,Bindings可以简化查询语法。请考虑以下示例:
$sql = "SELECT * FROM some_table WHERE id = ? AND status = ? AND author = ?";
$this->db->query($sql, array(3, 'live', 'Rick'));
查询中的问号会自动替换为查询函数第二个参数中数组中的值。
答案 1 :(得分:0)
你应该试试这个
SELECT g.date,g.description,g.amount AS cash,0 AS cheque
FROM generalledger AS g, (SELECT @gdate := NULL) as a
WHERE g.type="cash" AND (g.date=@gdate OR @gdate IS NULL)
UNION ALL
SELECT gg.date,gg.description,0 AS cash, gg.amount AS cheque
FROM generalledger AS gg, (SELECT @gdate := NULL) as b
WHERE gg.type="cheque" AND (gg.date=@gadte OR @gdate IS NULL)