Mysql - 导致数据与数据库中的数据无关

问题描述:

这是我的sql查询来总结数据库中的错误数。是什么导致下面的问题是,当我检查这里的可用数据时,它会检索给出的实际和正确的数据,如果我给出了任何错误(即表中不可用的数据)输入,则它不会提供任何结果抛出任何输出屏幕:Mysql - 导致数据与数据库中的数据无关

SELECT 
    SUM(IF(ieb.errortype_id='1',1,0)) AS Total_Critical, 
    SUM(IF(ieb.errortype_id='2',1,0)) AS Total_Non_critical, 
    u.emp_id, 
    u.emp_name 
FROM 
    issueerror_empmap iem, 
    issueerror_body ieb, 
    USER u, 
    issueerror_type iet 
WHERE 
    ieb.chapter_id = '424262' AND 
    iem.chapter_errorid=ieb.chapter_errorid AND 
    iem.emp_id = u.emp_id AND 
    u.emp_id = '693' AND 
    ieb.errortype_id=iet.errortype_id 
GROUP BY 
    iem.emp_id, 
    u.emp_name 
ORDER BY 
    iem.emp_id 

任何一个可以请建议我如何建立这个查询,如果可以检索数据并显示输出为空,如果输入的数据不可用在表中。

为了生产输出对上述查询是(如果在一个表中可用的数据):

Total_Critical Total_Non_Critical emp_id emp_name 
4     10     xxx  xxx 

为了生产输出对上述查询是(如果在表中没有可用的数据):

Total_Critical Total_Non_Critical emp_id emp_name 

我期待emp_id和emp_name的错误计数为空或零。

+0

未来,您是否可以尝试格式化查询以提高可读性?这次我为你做了。 – 2012-02-14 05:12:01

这个查询怎么样?

select 
sum (Total_Critical) as Total_Critical, 
sum(Total_Non_critical) as Total_Non_critical, 
emp_id, 
emp_name from 
(
(SELECT 
    SUM(IF(ieb.errortype_id='1',1,0)) AS Total_Critical, 
    SUM(IF(ieb.errortype_id='2',1,0)) AS Total_Non_critical, 
    u.emp_id, 
    u.emp_name 
FROM 
    issueerror_empmap iem, 
    issueerror_body ieb, 
    USER u, 
    issueerror_type iet 
WHERE 
    ieb.chapter_id = '424262' AND 
    iem.chapter_errorid=ieb.chapter_errorid AND 
    iem.emp_id = u.emp_id AND 
    u.emp_id = '693' AND 
    ieb.errortype_id=iet.errortype_id 
GROUP BY 
    iem.emp_id, 
    u.emp_name 
ORDER BY 
    iem.emp_id) 
) UNION ALL (
select 0,0,null, null 
) 
) as tbl1