如果你想按三列进行分组(
city_id
,
state_id
district_id
),这是毫无意义的,因为它不会改变你的生活
sales
桌子。你已经有了部分信息。
此外,在
表中有0代替了某些ID,并且在任何表中都没有任何ID等于0。我想你需要重新考虑你真正想要什么。
SELECT country,
state,
city,
district,
coalesce(amount, 0) amount
FROM country ctr
JOIN state_province st ON ctr.country_id = st.country_id
JOIN city c ON c.state_id = st.state_id
LEFT JOIN district d ON d.city_id = c.city_id
LEFT JOIN sales s ON
s.country_id = ctr.country_id AND
s.state_id = st.state_id AND
s.city_id = c.city_id AND
s.district_id = d.district_id
Demo