首页 > 解决方案 > 表的左外连接如何工作具有空值

问题描述

我有四个表:person并且booking,booking_detail,room_pricingperson_id用作表中的外键bookingperson_id用作表中的外键booking_detail。其中 room_id 用作 booking_detail 中的 foreign_key

假设我想在每个预订中显示所有的booking_idfrombooking表及其相应的房间总收入,包括那些在 `` 表中不存在的人,例如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

标签: sqloracle

解决方案


尝试以下使用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

推荐阅读