00-00的php mysql查询

wixjitnu  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(399)

我有4个日期,我需要计算,第一个日期需要等于$邮和其他3个不应计算 0000-00-00 作为约会。
我尝试了以下查询:

$sql_list = "SELECT Agent,count(datum_obrade) as obrada, 
count(datum_kontakta) as kontakti,
count(datum_vracanja) as zadrzani,
count(datum_terminacije) as terminacija from wb_base WHERE datum_obrade = '".$_POST["From"]."' 
group by Agent";

问题是 count() 会算数的 0000-00-00 作为一个日期(我的列是phpmyadmin,设置为date),我注意到如果我手动将date设置为 NULL 在db中,查询不会计算它,但问题是jquery日期选择器不会返回 NULL 如果数据库为空,则将其转换为db。我也问了这个问题
那么我如何设置这个查询来计算所有不是0000-00-00的日期呢。如果我加上 AND 之后 WHERE 然后查询需要匹配3个条件。如果我使用 OR 还是算错了。

rhfm7lfc

rhfm7lfc1#

试试这个

sql_list = "SELECT Agent,count(datum_obrade) as obrada, 
count(case when datum_kontakta>0 then 1 end) as kontakti,
count(case when datum_vracanja>0 then 1 end) as zadrzani,
count(case when datum_terminacije>0 then 1 end) as terminacija from wb_base WHERE datum_obrade = '".$_POST["From"]."' 
group by Agent";

这个 case 子句过滤掉所有不存在的条目 >0 . 在这些情况下 null 值发送到 count() 不得分的功能。所以最后只计算“有效”日期。

ax6ht2ek

ax6ht2ek2#

SELECT `Agent`
  , COUNT(NULLIF(datum_obrade, '0000-00-00')) as obrada
  , COUNT(NULLIF(datum_kontakta, '0000-00-00')) as kontakti
  , COUNT(NULLIF(datum_vracanja, '0000-00-00')) as zadrzani
  , COUNT(NULLIF(datum_terminacije, '0000-00-00')) as terminacija 
FROM wb_base 
WHERE datum_obrade = ?
GROUP BY `Agent`
;

这些nullif()函数将匹配“0000-00-00”的值转换为null,否则将使用不匹配的值。

相关问题