2012-02-14 33 views
0

這是我的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

回答

0

這個查詢怎麼樣?

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