在写统计图的接口,sql查询一直无数据,给的默认值也没有实现:
SELECT
ifnull( unit.num, 0 ) riskUnitCount,
ifnull( EVENT.num, 0 ) riskEventCount,
ifnull( measure.num, 0 ) riskMeasureCount
FROM
tb_company
LEFT JOIN (
SELECT
risk.qyid,
count( unit.id ) num
FROM
HAZARD_INFO risk,
double_risk_unit unit
WHERE
risk.id = unit.HAZARD_ID
AND risk.STATUS = 1
AND unit.STATUS = 1
GROUP BY
risk.qyid
) unit ON unit.qyid = tb_company.id
LEFT JOIN (
SELECT
risk.qyid,
count( EVENT.id ) num
FROM
HAZARD_INFO risk,
double_risk_unit unit,
double_risk_event EVENT
WHERE
risk.id = unit.HAZARD_ID
AND unit.ID = EVENT.RISK_UNIT_ID
AND risk.STATUS = 1
AND unit.STATUS = 1
AND EVENT.STATUS = 1
GROUP BY
risk.qyid
) EVENT ON EVENT.qyid = tb_company.id
LEFT JOIN (
SELECT
risk.qyid,
count( measure.id ) num
FROM
HAZARD_INFO risk,
double_risk_unit unit,
double_risk_event EVENT,
double_risk_measure measure
WHERE
risk.id = unit.HAZARD_ID
AND unit.ID = EVENT.RISK_UNIT_ID
AND EVENT.ID = measure.RISK_EVENT_ID
AND risk.STATUS = 1
AND unit.STATUS = 1
AND EVENT.STATUS = 1
AND measure.STATUS = 1
GROUP BY
risk.qyid
) measure ON measure.qyid = tb_company.id
WHERE tb_company.STATUS = 1 AND tb_company.sfsjlzdyzd = 1
AND tb_company.id = 'f6'
从返回结果可以看出“这代表没有结果集,就是连字段都没有,不是字段的值为空”,中间的业务各种GROUP BY,都是临时表,没有实际字段,再经过“AND tb_company.id = ‘f6’“筛选,就是没有结果集,找不到,ifnull也不生效。
二、sql没动,就是给查询结果增加”COUNT(*) “后,实现了我需要的效果,虽然这个字段用不到。
其他字段也有了默认值。
三、原因不明,效果实现了。
四、使用的mysql版本。