【发布时间】:2020-07-25 21:07:59
【问题描述】:
我需要计算以下案例的总数:parent cities、districts 和 regions
那么请让我告诉你目前的情况以及我目前所做的工作
我有两张桌子[cities] & [covid19cities]
[城市] 表: 参考表
结构是:
------------------------------
| id | parent_id | city_name |
------------------------------
城市等级为:
- Region //[its parent_id = 0]
-- District //[its parent_id = the region id]
---- Parent-city //[its parent_id = the district id]
------ Child-city //[its parent_id = the parent-city id]
[covid19cities] 表:
结构是:
-----------------------------------------------------
| id | city_id | date | n_cases | r_cases | d_cases |
-----------------------------------------------------
所以我们每天都会在[covid19cities] 填写不同城市的不同案例:
n_cases = 新的 covid-19 病例; r_cases = 康复病例; d_cases = 死亡病例
到目前为止:
-
我可以使用这样的查询获得每个城市的病例总数(例如新病例):
SELECT sum(`n_cases`) AS city_n_cases, cities.name AS city_name, cities.id AS city_id, FROM covid19cities INNER JOIN cities ON cities.id = covid19cities.city_id WHERE covid19cities.city_id = '#'- 我能够获得所有城市的所有病例(例如新病例)的总和:
现在,我需要计算以下案例的总数:
- 母市
- 地区
- 地区
那么,我该如何实现呢?我想到的是
- 查找所有地区
- 在 fetch assoc while 循环中,我搜索该区域的地区
- 在我搜索父城市的地区的 fetch assoc while 循环中
- 在父城市的 fetch assoc while 循环中,我搜索子城市
- 计算总和,然后向后添加到父城市,然后从那里到地区,然后到区域!
但是我认为这不是应该的做法。但是,我不知道在这种情况下如何继续跟踪亲子城市。
感谢您的建议和帮助。
谢谢
p.s. sorry for my English :/
【问题讨论】:
-
如果级别是固定的,那么 3 个自连接将为您提供层次结构,您可以使用 rollup group by 修饰符来获取父级的总和。
-
您在表格中为城市级别准备的模型是什么,似乎没有提到您为模型分配了该关系的哪一列。或者您想在单独的表中考虑它们,然后进行相关查询!?
-
@Shadow 你能解释一下吗?
-
@sultan,我知道,但它的逻辑对读者来说并不清楚,我想说!也许你应该更详细地解释这种关系
-
@GMB,谢谢,我已经看到你的答案,我会尝试将它应用到我的系统中。如果它不起作用,我将为您提供我数据库中的示例数据。再次感谢。
标签: php mysql sql database join