sql - 表的左外连接如何工作具有空值
问题描述
我有四个表:person
并且booking
,booking_detail,room_pricingperson_id
用作表中的外键booking
并person_id
用作表中的外键booking_detail
。其中 room_id 用作 booking_detail 中的 foreign_key
假设我想在每个预订中显示所有的booking_id
frombooking
表及其相应的房间总收入,包括那些在 `` 表中不存在的人,例如id 1
,我正在使用 oracle 数据库
人
person_id name
1 xyz
2 abc
3 jkl
预订
booking_id person_id
1 1
2 3
3 1
预订详情
person_id roomid
2 201
3 303
3 303
房间定价
room_id price
201 $ 100
302 $ 100
303 $ 200
决赛桌应该是这样的
booking_id total
1 0
2 400$
3 0
解决方案
尝试以下使用left join
select
b.booking_id,
coalesce(sum(total), 0) as total
from booking b
left join booking_details bd
on b.person_id = bd.person_id
left join room_pricing rp
on bd.room_id = rp.room_id
group by
b.booking_id
推荐阅读
- javascript - 如何使用 AJV 创建自定义错误消息?
- windows-10 - 使用 Windows 10 更改 kvm qcow2 文件
- node.js - 如何将不属于实体的附加数据发送到后端(例如,通过 URL 查询)
- javascript - 显示 Vee-Validate 正则表达式的自定义消息
- javascript - 从 react.js 传递 express.js 中的一个或多个变量
- javascript - 如何将ts文件导入现有nodejs项目的js文件
- verilog - 从verilog开始,试图了解这段模块实例化代码中发生了什么
- mysql - Laravel eloquent 查找具有两个 destinc 值的条目对
- c# - 如何返回只有一个字段的命名元组
- decision-tree - Xgboost 在同一个特性上重复分裂