sql—表的左外部联接的工作方式为空值

8dtrkrch  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(334)

我有四张table: person 以及 booking ,预订详情,房间定价在哪里 person_id 在中用作外键 booking 表和 person_id 在中用作外键 booking_detail table。房间id用作预订详细信息中的外键
如果我想展示所有 booking_idbooking 表及其相应的每次预订的客房总收入,包括“表”中不存在的客房,如 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

最后一张table应该是这样的

booking_id    total
    1              0
    2            400$
    3             0
j13ufse2

j13ufse21#

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

eyh26e7m

eyh26e7m2#

你想要一个 left join 加总:

select p.person_id, coalesce(sum(o.total), 0)
from person p left join
     order o
     on o.person_id = p.person_id
group by p.person_id;

相关问题