2013-04-02 34 views
1

當具有0我有有自己的職業列爲以下的人的名單:SQL - 使用計數

Doctor Male 
Teacher Male 
Principal Male 
Nurse Female 
Doctor Male 

當我組他們的職業,我想爲訪問任何職業返回0這不在我擁有的子列表中。這裏是我使用的代碼:

​​

我想它產生2的醫生,因爲有2名男性,而且對護士產生出0,因爲沒有男護士。請讓我知道我該如何做到這一點,謝謝!

回答

0

您需要外連接。我切換表的順序,以便它是一個left join

SELECT Profession.Profession, 
     sum(iif(people.sex = "Male", 1, 0)) AS CountOfProfession 
FROM Profession LEFT JOIN 
    ON People.PeopleID = Profession.PeopleID 
GROUP BY Profession.Profession; 
+1

的'where'子句將其變爲內部連接。 – Andomar

+0

我認爲,WHERE(((People.Sex)=「Male」))'的條件將被省略。 – shahkalpesh

+0

我仍然想知道有多少男性。將此改爲LEFT JOIN並沒有解決這個問題,因爲我仍然缺少只有女性爲職業的職業。 – user2237422

0

這可以具有外進行連接,並從WHERE移動狀態到ON子句:

SELECT Profession.Profession, 
     COUNT(People.PeopleID) AS CountOfProfession 
FROM Profession 
    LEFT JOIN People 
    ON ( People.PeopleID = Profession.PeopleID 
     AND People.Sex = 'Male') 
GROUP BY Profession.Profession ;