我正在尝试用pdo运行sql查询
这很管用
$result = $dbo->query("SELECT sum(c) as scfus
FROM tbl
WHERE
YEAR(ondate)=YEAR('".$_POST['startdate']."')
AND MONTH(ondate)=MONTH('".$_POST['startdate']."')
AND DAY(ondate)=$i");
但事实并非如此
$result = $dbo->query("SELECT a,b,sum(c) as scfus
FROM tbl
WHERE
YEAR(ondate)=YEAR('".$_POST['startdate']."')
AND MONTH(ondate)=MONTH('".$_POST['startdate']."')
AND DAY(ondate)=$i");
唯一的区别是在查询中添加了a、b列名。
我可以将这个查询(两者)直接运行到mysql中,并像预期的那样返回一条记录,但是pdo似乎不喜欢同一个查询中的列名和sum?
我看不出原因或解决办法。pdo的新成员,所以以前对我来说从来都不是问题。
谢谢。
update-ok,我仍然认为这应该可以正常工作,但是作为一种变通方法,我运行了两个几乎完全相同的sql语句。一个带有select sum(x),一个带有select a,b,但没有sum。工作很好,但我真的应该能够做到这一点在一个声明,除非我进入一些pdo的限制,我还没有意识到。
3条答案
按热度按时间q8l4jmvw1#
将工作从id=some的表中选择a,b,(从表中选择sum(id)*30)(从用户需要的表中选择id);
plupiseo2#
你可能需要
GROUP BY c
(或您可能希望将域聚合函数分组的任何列)SUM()
通过)以获得所需的结果集。。。或许可以考虑一下上面的建议。t5fffqht3#
试着用这种方式来回答你的问题,为我实现你的目标:
$result=$dbo->query(“选择a,b,(选择sum(c)作为whateverfrom tbl),作为来自tbl的scfus,其中year(ondate)=year('”..$\u post['startdate']。“')和month(ondate)=month('”..$\u post['startdate']。“')和day(ondate)=$i“);
sum只返回一行,因此您永远不会得到所有结果,也不会只得到第一个匹配where条件的结果(它注册找到的第一条记录,然后只计算所需的内容)。
会有用的
哦,顺便说一句,做一个日期的时间戳,用datesql格式做一个日期post字符串,然后检查