特定地区事故多表关联查询的SQL实现咨询
特定地区事故多表关联查询的SQL实现咨询
嘿,我看你正在处理特定地区的事故数据多表查询,已经写出了核心的SQL和Python代码,先来帮你整理并补充下细节~
需求说明
我想要提取特定地区编码的事故相关数据,具体字段包括:
- 车辆表(vehicle)中的司机性别(sex_of_driver)
- 伤亡表(casualty)中的伤者性别(sex_of_casualty)
- 事故表(accident)中的限速(speed_limit)
- 车辆表(vehicle)中的车辆年龄(age_of_vehicle)
我的Python代码实现
stoke_accident = cur.execute("SELECT vehicle.sex_of_driver, casualty.sex_of_casualty, accident.speed_limit, vehicle.age_of_vehicle FROM accident JOIN vehicle ON vehicle.accident_index = accident.accident_index JOIN casualty ON accident.accident_index = casualty.accident_index AND vehicle.vehicle_reference = casualty.vehicle_reference JOIN lsoa ON accident.lsoa_of_accident_location = lsoa.lsoa01cd WHERE lsoa.lsoa01nm = 'Stoke Upon Trent';") acc_list = stoke_accident.fetchall()
对应的SQL查询语句
SELECT vehicle.sex_of_driver, casualty.sex_of_casualty, accident.speed_limit, vehicle.age_of_vehicle FROM accident JOIN vehicle ON vehicle.accident_index = accident.accident_index JOIN casualty ON accident.accident_index = casualty.accident_index AND vehicle.vehicle_reference = casualty.vehicle_reference JOIN lsoa ON accident.lsoa_of_accident_location = lsoa.lsoa01cd WHERE lsoa.lsoa01nm = 'Stoke Upon Trent';
小提示
- 你已经正确使用了多表关联的逻辑:通过
accident_index关联事故表和车辆表,再通过accident_index+vehicle_reference关联到伤亡表,最后通过地区编码表定位目标地区,这个关联逻辑是合理的,能保证数据的对应性(避免同一事故多车辆/多伤亡的不匹配) - 如果查询结果出现重复数据,可以考虑添加
DISTINCT关键字去重,或者检查是否存在同一条事故记录对应多条车辆/伤亡记录的业务场景 - 可以给表名设置别名简化SQL语句,比如把
accident设为a,vehicle设为v,casualty设为c,lsoa设为l,这样SQL会更简洁易读,修改后的SQL示例如下:
SELECT v.sex_of_driver, c.sex_of_casualty, a.speed_limit, v.age_of_vehicle FROM accident a JOIN vehicle v ON v.accident_index = a.accident_index JOIN casualty c ON a.accident_index = c.accident_index AND v.vehicle_reference = c.vehicle_reference JOIN lsoa l ON a.lsoa_of_accident_location = l.lsoa01cd WHERE l.lsoa01nm = 'Stoke Upon Trent';
备注:内容来源于stack exchange,提问作者Francis
相关产品推荐
相关产品推荐

