我有4张桌子:
country
:
region
:
dept
:
user
:
user
表只有一个外键集(其他外键应为空)。
我们不必设置外键fk_pays
,因为我们可以通过country
触摸fk_dept.fk_region.fk_country
表格(设置fk_dept
时)
OR
通过fk_region.fk_country
(设置fk_region
时)
这种行为是为了避免冗余。
我的问题是:
如何使用包含该国家/地区用户数(COUNT
)的添加列来获取所有国家/地区信息?
我知道如何使用针对每笔付款的不同请求(使用COALESCE
),但我希望在单一内容中执行此操作。
答案 0 :(得分:0)
试试这个:
SELECT count(user.id), country.name, region.name, dept.name FROM user
JOIN country ON user.fk_country = country.id
JOIN region ON region.fk_country = country.id
JOIN dept ON dept.fk_region = region.id
GROUP BY country.id
答案 1 :(得分:0)
只需在连接中使用OR
SELECT c.id, c.name, count(DISTINCT u.id)
FROM country AS c
JOIN region AS r ON c.id=r.fk_country
JOIN dept AS d ON r.id=d.fk_region
JOIN users AS u ON u.fk_country=c.id OR u.fk_region=r.id OR u.fk_dept=d.id
GROUP BY c.id,c.name;