Php MySQL使用不同的WHERE子句进行多次计数并查看结果

Php MySQL使用不同的WHERE子句进行多次计数并查看结果,php,mysql,sql,Php,Mysql,Sql,我试图从我的订单表中获取:每个客户在一周内下的订单数量,然后在下一周再做一次计数,然后再做一次,再做一次,等等 我正在使用COUNT,但它不断返回一个空结果 这是我的问题 SELECT `uid`, (SELECT COUNT(`uid`) FROM `orders` WHERE `order_timestamp` > '1476707688' and `order_timestamp` < '1476189288') as 'number1', (SELECT COU

我试图从我的订单表中获取:每个客户在一周内下的订单数量,然后在下一周再做一次计数,然后再做一次,再做一次,等等

我正在使用COUNT,但它不断返回一个空结果

这是我的问题

SELECT `uid`, (SELECT COUNT(`uid`) FROM `orders` WHERE `order_timestamp` > '1476707688' and `order_timestamp` < '1476189288') as 'number1',
       (SELECT COUNT(`uid`) FROM `orders` WHERE `order_timestamp` > '1476189288' and `order_timestamp` < '1475584488') as 'number2',
       (SELECT COUNT(`uid`) FROM `orders` WHERE `order_timestamp` > '1475584488' and `order_timestamp` < '1474979688') as 'number3'
FROM `orders` ORDER BY `uid` ASC
结果如下所示:

我知道一周内有多个客户下了多个订单

你怎么做这个查询? 将带回客户在该时间段内的订单数量的查询


干杯,

你能试一下吗

SELECT * FROM {table} WHERE date > DATE_SUB(NOW(), INTERVAL 1 DAY) ORDER BY uid DESC;        
SELECT * FROM {table}WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK) ORDER BY uid DESC;
SELECT * FROM {table}WHERE date > DATE_SUB(NOW(), INTERVAL 1 MONTH) ORDER BY uid DESC;

你能试一下吗

SELECT * FROM {table} WHERE date > DATE_SUB(NOW(), INTERVAL 1 DAY) ORDER BY uid DESC;        
SELECT * FROM {table}WHERE date > DATE_SUB(NOW(), INTERVAL 1 WEEK) ORDER BY uid DESC;
SELECT * FROM {table}WHERE date > DATE_SUB(NOW(), INTERVAL 1 MONTH) ORDER BY uid DESC;

只需使用条件聚合:

SELECT `uid`,
       SUM(`order_timestamp` > '1476707688' and `order_timestamp` < '1476189288') as number1,
       SUM(`order_timestamp` > '1476189288' and `order_timestamp` < '1475584488') as number2,
       SUM(`order_timestamp` > '1475584488' and `order_timestamp` < '1474979688') as number3
FROM `orders`
GROUP BY `uid` ASC;

注意:这是按uid聚合的,因此每个uid将有一行,而不是每个订单。这似乎是明智之举。

只需使用条件聚合:

SELECT `uid`,
       SUM(`order_timestamp` > '1476707688' and `order_timestamp` < '1476189288') as number1,
       SUM(`order_timestamp` > '1476189288' and `order_timestamp` < '1475584488') as number2,
       SUM(`order_timestamp` > '1475584488' and `order_timestamp` < '1474979688') as number3
FROM `orders`
GROUP BY `uid` ASC;

注意:这是按uid聚合的,因此每个uid将有一行,而不是每个订单。这似乎是明智之举。

order\u timestamp>'1475584488'和order\u timestamp<'1474979688'`您确定这将返回一个值吗?有什么能超过1475年吗。。。还不到1474?是的,那是新手犯的错误!order_timestamp>'1475584488'和order_timestamp<'1474979688'`您确定这将返回一个值吗?有什么能超过1475年吗。。。还不到1474?是的,那是新手犯的错误!这就是我想要的!谢谢你,伙计。还有,我本来就把大于,小于。。。所以正好相反但这带来了我需要的结果。谢谢这就是我想要的!谢谢你,伙计。还有,我本来就把大于,小于。。。所以正好相反但这带来了我需要的结果。谢谢你能说得更准确些吗?你的意图是什么?你面临着什么问题?你能说得更准确些吗?你的意图是什么?你面临什么问题?