如何选择和分组四个MySQL表的查询结果?

时间:2015-03-31 08:51:09

标签: 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

但我得到的是国家名称加上该国家/地区的电台数量,而不是每个国家/地区的公司总数。

1 个答案:

答案 0 :(得分: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.你不需要使用左连接,因为连接中必须没有id miss 2.如果公司可以在一个省或一个国家/地区设置多个站点,您应该使用distinct关键字在同一组中仅告知sql计数重复项目一次 3.如果您不需要公司名称表中的信息,请不要加入