2016-05-01 195 views
-1

我的mysql查詢返回重複問題。我不知道爲什麼。我希望有人能請他們看看並提供建議。MySQL查詢返回重複結果

我有兩個表XYZ1和XYZ2

XYZ1包含員工數據,同時XYZ2包含使用健康檢查。

我想實現的目標是,我想要統計男性僱員的健康檢查數量。

select COUNT(*) as Num 
    FROM xyz1 
    INNER JOIN xyz2 
      ON xyz1.cid = xyz2.cid 
WHERE xyz1.gender = 'male' 

它返回重複的錯誤。

請幫

+3

當你說重複的錯誤。你什麼意思? 2倍的預期結果或實際的錯誤? – Matt

+1

它是否是僱員代碼的「cid」? –

+0

「我想統計男性僱員的健康檢查數量」? * A *男性員工?哪一個?您沒有任何標準來查詢特定員工。或者你想要男性員工的健康檢查的* avarage *數量?還有什麼? –

回答

0

如果你試圖找到男性員工進行健康檢查的數量,您會希望

SELECT COUNT(*) AS TOTAL_HEALTH_CHECKS_FOR_MALES 
    FROM XYZ1 
    INNER JOIN XYZ2 
    ON XYZ2.CID = XYZ1.CID 
    WHERE XYZ1.GENDER = 'male' 

這就是你已經有了。

如果你正在試圖確定誰曾至少一個健康檢查男性員工人數的查詢是

SELECT COUNT(*) AS TOTAL_MALES_WITH_HEALTH_CHECKS 
    FROM XYZ1 
    INNER JOIN (SELECT DISTINCT CID 
       FROM XYZ2) t2 
    ON t2.CID = XYZ1.CID 
    WHERE XYZ1.GENDER = 'male' 

它要找出每個男員工有多少健康檢查有您是否想要使用

SELECT XYZ1.CID, COUNT(*) AS NUMBER_OF_HEALTH_CHECKS 
    FROM XYZ1 
    INNER JOIN XYZ2 
    ON XYZ2.CID = XYZ1.CID 
    WHERE XYZ1.GENDER = 'male' 
    GROUP BY XYZ1.CID 

祝您好運。

+0

感謝您的回答我正在尋找第二種類型的查詢。 第一個查詢返回6個結果。 4個來自xyz1,2個來自xyz2。 但我只是在尋找來自xyz1的4個結果 – Auj