2015-03-31 104 views
-1

這些表是這樣的:如何選擇和分組四個MySQL表的查詢結果?

companies 
companyid name    description 

stations 
company_id province_id 

provinces 
provinceid country_id  province 

countries 
countryid country 

如何顯示在每個國家的企業數量?

我想:

SELECT country, COUNT(companyid) 
FROM companies 
LEFT JOIN stations ON company_id=companyid 
LEFT JOIN provinces ON stations.province_id=provinces.country_id 
LEFT JOIN countries ON provinces.country_id=countryid 
GROUP BY country 

但是我得到的是國名加上電臺在該國,而不是總的公司在每個國家的數量。

+0

組由公司名稱以及組。 – 2015-03-31 09:11:19

回答

0
SELECT country, COUNT(distinct companyid) 
FROM stations 
JOIN provinces ON stations.province_id=provinces.country_id 
JOIN countries ON provinces.country_id=countryid 
GROUP BY country 

1.you根本無需使用左側加入,因爲必須有沒有ID錯過加盟
2,如果一個公司能夠比設置1臺更在一省或一個國家,你應該使用distinct關鍵字告訴sql計數重複項只有一次在同一組
3.如果你不需要公司名稱表的信息,只是不加入它