2015-03-31 4 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

Группа от компании id. –

ответ

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 не нужно использовать LEFT JOIN, потому что должно быть идентификатор пропустить в присоединитесь
2.Если компании может настроить более чем на 1 станции в провинции или страны, вы должны использовать distinct ключевое слово, чтобы указать количество экземпляров sql только в одной группе
3.Если вам не нужна информация только из названия компании, просто не присоединяйте ее

Смежные вопросы