如何简化这个陈述? php mysql

时间:2014-10-08 16:40:57

标签: php mysql sql

我需要从mysql表中检索多个选择,我的需要是简化语句

这些是我的陈述

$stardate=dateselect
$enddate=dateselect

SELECT count(distinct(customer)) as customer FROM my_table where date_field BETWEEN'$startdate' AND '$enddate'
SELECT count(distinct(customer)) as computeris1 FROM my_table where computer=1 and date_field BETWEEN'$startdate' AND '$enddate'
SELECT count(distinct(customer)) as computeris2 FROM my_table where computer=2 and date_field BETWEEN'$startdate' AND '$enddate'

我有大约10个字段,每个字段有4个或5个值(选项)想要计算每个字段(例如计算机)的不同客户以及所有2个日期之间的数据。

另一个问题是日期是mysql的时间戳,没有返回正确的并排除今天的记录,除非我选择结束日期作为明天然后它起作用,我认为这是一个时间问题,我如何能够正确地计算日期以丢弃时间?

1 个答案:

答案 0 :(得分:2)

您可以使用date()修复日期/时间问题。至于其余部分,您可以使用条件聚合在一个查询中执行所有操作:

SELECT count(distinct(customer)) as customer,
       count(distinct case when computer = 1 then customer end) as computer1,
       count(distinct case when computer = 2 then customer end) as computer2
FROM my_table
where date(date_field) BETWEEN '$startdate' AND '$enddate';

这会将值设置为单独的列而不是单独的行。