无外键关联时如何对flight表与service_point表执行关联查询
实现方案
两张表的位置编码存储规则一致,即便没有外键也可以手动关联字段完成查询,你可以根据是否要同时返回出发地名称选择对应的查询逻辑:
1. 需要同时返回出发地、目的地名称的查询
SELECT f.flight_id, f.flight_no, dep.point_name AS 出发地名称, arr.point_name AS 目的地名称, f.dep_time 出发时间, f.arr_time 到达时间, f.airline_code 航司编码 FROM flight f -- 关联出发地的位置信息 LEFT JOIN service_point dep ON f.dep_point_code = dep.point_code -- 关联目的地的位置信息 LEFT JOIN service_point arr ON f.arr_point_code = arr.point_code -- 筛选目标目的地,可根据需要切换为按编码筛选:WHERE arr.point_code = '目标编码' WHERE arr.point_name = '你要查询的目的地名称'
2. 仅需获取对应目的地的航班原始数据,不需要返回位置名称
SELECT f.* FROM flight f INNER JOIN service_point sp ON f.arr_point_code = sp.point_code WHERE sp.point_name = '你要查询的目的地名称'
注意事项
- 以上语句中的字段名可根据你的表实际字段做调整,比如flight表的到达编码字段如果为
arr_code、service_point的编码字段如果为sp_code,替换对应关联字段即可。 - 关联查询时建议搭配实际业务筛选条件缩小数据范围,提升查询效率。
内容的提问来源于stack exchange,提问作者StckInaRut2007
相关产品推荐
相关产品推荐

