1
我使用codeigniter,我需要在查询中使用聚合函数。所以我有这个查询。在codeigniter中使用字符串变量作为查询
"SELECT Dated, CASE WHEN `Account_ID` = 2 then SUM(Total_Bricks) ELSE 0 end as 'Nadeem',
CASE WHEN Account_ID = 2 then SUM(Kaat_Bricks) ELSE 0 end as 'NadeemKaat',
CASE WHEN `Account_ID` = 7 then SUM(Total_Bricks) ELSE 0 end as 'Abid',
CASE WHEN Account_ID = 7 then SUM(Kaat_Bricks) ELSE 0 end as 'AbidKaat',
CASE WHEN `Account_ID` = 8 then SUM(Total_Bricks) ELSE 0 end as 'Sajid',
CASE WHEN Account_ID = 8 then SUM(Kaat_Bricks) ELSE 0 end as 'SajidKaat'
FROM `tblstockdetail` GROUP BY `Dated`"
我已经通过一个简单的foreach循环产生这个查询
$stock = $this->Kharkaar_Model->get_stockdetail();
$sql = '"SELECT Dated, ';
$numItems = count($stock);
$i = 0;
foreach ($stock as $key => $value)
{
if(++$i === $numItems)
{
$sql.= "CASE WHEN `Account_ID` = ".$value['Account_ID']." then SUM(Total_Bricks) ELSE 0 end as '".$value['AccountName']."', <br />
CASE WHEN Account_ID = ".$value['Account_ID']." then SUM(Kaat_Bricks) ELSE 0 end as '".$value['AccountName']."Kaat' <br /> FROM `tblstockdetail` GROUP BY `Dated`";
}
else
{
$sql.= "CASE WHEN `Account_ID` = ".$value['Account_ID']." then SUM(Total_Bricks) ELSE 0 end as '".$value['AccountName']."', <br />
CASE WHEN Account_ID = ".$value['Account_ID']." then SUM(Kaat_Bricks) ELSE 0 end as '".$value['AccountName']."Kaat', <br /> ";
}
}
$sql.= '"';
现在,当我试图让这个查询的结果
$result = $this->db->query($sql);
它给我一个语法错误,否则当我把这个查询直接进入
$result = $this->db->query(// string query here);
它运行良好。
你什么语法错误,PHP或MySQL? – Shadow
您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册,以找到在''SELECT date,CASE WHERE'Account_ID' = 2时使用的正确语法,然后SUM(Total_Bricks)ELSE 0在第1行以''结尾 –
您有一个额外的'' '在'select'前面。 – Shadow