Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mysql中的SUM(IF)条件有问题_Php_Mysql_Date - Fatal编程技术网

Php mysql中的SUM(IF)条件有问题

Php mysql中的SUM(IF)条件有问题,php,mysql,date,Php,Mysql,Date,有人能帮我解决下面的问题吗?我需要生成一份报告,能够计算在没有特定期限的情况下发送和签署了多少TOB。有3个不同的TOB表。下面是我的SQL查询: select cl.name, con.name, COUNT(IF(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0)) as "TOB Perm Sent", COUNT(IF(DATE( tp.signed_on ) between '2012-01-

有人能帮我解决下面的问题吗?我需要生成一份报告,能够计算在没有特定期限的情况下发送和签署了多少TOB。有3个不同的TOB表。下面是我的SQL查询:

select cl.name, con.name,
    COUNT(IF(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Perm Sent",
    COUNT(IF(DATE( tp.signed_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Perm Signed",
    COUNT(IF(DATE( tt.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Temp Sent",
    COUNT(IF(DATE( tt.signed_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Temp Signed",
    COUNT(IF(DATE( tc.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Contract Sent",
    COUNT(IF(DATE( tc.signed_on ) between '2012-01-01' AND '2012-12-31', 1, 0))  as "TOB Contract Signed"
FROM clients cl
    LEFT OUTER JOIN consultants con ON cl.CIC = con.con_id
    LEFT OUTER JOIN tob_perm tp ON tp.client_id = cl.client_id
    LEFT OUTER JOIN tob_temp tt ON tt.client_id = cl.client_id
    LEFT OUTER JOIN tob_contract tc ON tc.client_id = cl.client_id
WHERE cl.status IN(1) and cl.client_id = 16
GROUP BY cl.client_id
order by cl.client_id asc
样本数据: 顾问表

id       name
-----------------
 1       Andy
id       name       con_id
----------------------------
 1     Client A        1
客户表

id       name
-----------------
 1       Andy
id       name       con_id
----------------------------
 1     Client A        1
TOB Perm

id       client_id          sent_on          signed_on
-------------------------------------------------------
 1           1            2012-02-05         0000-00-00
 2           1            2012-10-09         2012-06-03
TOB温度

id       client_id          sent_on          signed_on
-------------------------------------------------------
 1           1            0000-00-00         2012-08-30
 2           1            0000-00-00         2012-02-19
 3           1            2012-10-09         2012-06-03
TOB合同

id       client_id          sent_on          signed_on
-------------------------------------------------------
 1           1            2012-08-30         0000-00-00 
我想产生的结果如下表所示:

No    Client Name    Consultant     TOB perm sent     TOB perm signed     TOB temp sent       TOB temp signed      TOB contract sent       TOB contract signed
-----------------------------------------------------------------------------------------------------------------------------------------------------------
1      Client A        Andy              2                   1                  1                     3                    1                       0        
有人能帮我问一下吗?提前谢谢

更新 我认为我的IF状况有问题:

IF(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31', 1, 0)

有人能帮我解决这个问题吗?谢谢

sum
替换
count
,使之生效

count
对记录进行计数,不关心条件。例如使用

SUM(DATE( tp.sent_on ) between '2012-01-01' AND '2012-12-31')

嗨,我以前试过SUM,但结果不正确。我写条件的方式有问题吗?没有,条件似乎很好。只需使用
sum()
我尝试使用sum(),但结果为0,如果COUNT()则所有列都为2