大家早上好。
我要疯了
我需要提取每个客户当年的发票数量。
在我的表 tbl_preventivi 中,我有客户字段 anagrafica_id 和发票日期字段 date_prev。
这是我的代码。
$anno = date('Y');
SELECT tbl_preventivi.anagrafica_id, Count(tbl_preventivi.preventivo_id) AS totale
FROM tbl_preventivi
GROUP BY tbl_preventivi.anagrafica_id, Year(tbl_preventivi.data_prev)
HAVING ((Year(tbl_preventivi.data_prev) = ".$anno.") AND (tbl_preventivi.anagrafica_id=".$_GET['anagrafica_id']."))
我确信在我所做的测试中,结果必须是 1,而不是查询为空。
如果我删除
(Year(tbl_preventivi.data_prev) = ".$anno.") AND
查询有效并返回 6(这是前几年的发票数量)。
我哪里错了?
答案 0 :(得分:0)
最简单的解决方案是:
SELECT p.`anagrafica_id`,
COUNT(p.`preventivo_id`) as `totale`
FROM `tbl_preventivi` p
WHERE p.`anagrafica_id` = 12345 and YEAR(p.`data_prev`) = 9999
GROUP BY p.`anagrafica_id`;
<块引用>
注意: 12345
应替换为经过清理的客户编号,9999
应替换为经过清理且符合逻辑的年份。准备好的语句在这里是您的朋友。
如果您希望查看某个客户所有年份的所有发票,您可以这样做:
SELECT p.`anagrafica_id`,
YEAR(p.`data_prev`) as `year`,
COUNT(p.`preventivo_id`) as `totale`
FROM `tbl_preventivi` p
WHERE p.`anagrafica_id` = 12345
GROUP BY p.`anagrafica_id`, `year`
ORDER BY `year` DESC;
同样,请务必清理您的输入。用 Fox Mulder 的名言:不要相信任何人。