创建视图,显示所有未预留的席位

时间:2010-02-17 11:17:09

标签: sql postgresql

我有两张桌子:在一张桌子上,我保存了特定房间的所有座位。在另一个表中,存储了座位预订的数据。

现在,我想创建一个视图,其中我有一个标记座位标记或未标记的列。

或者更抽象:如果某个号码(座位号码)出现在预订表中,我想在视图的表格列中给出true / false。

提前致谢

PS:我使用postgres

表定义:

查看“public.seats”

   Column   |  Type   | Modifiers 
------------+---------+-----------
ticketname | text    | 
price      | integer | 
colour     | text    | 
snr        | integer |                      <- thats thes seatnumber, primary key
px         | integer | 
py         | integer | 
rnr        | integer |                      <- the roomnumber, not relevant

表“public.reservation”

Column |  Type   | Modifiers 
--------+---------+-----------
spnr   | integer | 
snr    | integer |                            <- references seats
knr    | integer | 

3 个答案:

答案 0 :(得分:1)

CREATE OR REPLACE VIEW seat_reserved
AS
SELECT s.snr seat,
       CASE COALESCE(r.snr,-1) WHEN -1 THEN false ELSE true END reserved
 FROM  seats s
       LEFT OUTER JOIN reservation r on r.snr = s.snr

答案 1 :(得分:0)

select s.*, exists ( select * from reservation r where r.snr = s.snr ) as reserved from seats

答案 2 :(得分:-1)

选择st。*,解码(res.snr,null,'false','true')保留
从座位st,
预约res 其中res.snr(+)= st.snr