[英]Query every row of the table after joining it to another
我建立了一個SQL查詢來獲取所有可出租但未預訂的property
地址:
select property.address
from (period join booking on period.propertyid = booking.propertyid) join property on period.propertyid = property.id
where period.type = 'available'
AND period.end >= TO_DATE('2016-01-25', 'YYYY-MM-DD')
AND period.start <= TO_DATE('2016-01-20', 'YYYY-MM-DD')
AND (
booking.start > TO_DATE('2016-01-25', 'YYYY-MM-DD') OR
booking.start < TO_DATE('2016-01-20', 'YYYY-MM-DD')
)
AND (
booking.end > TO_DATE('2016-01-25', 'YYYY-MM-DD') OR
booking.end < TO_DATE('2016-01-20', 'YYYY-MM-DD')
);
但是,由於period join booking on period.propertyid = booking.propertyid
進行了period join booking on period.propertyid = booking.propertyid
因此它不會查詢booking
表中不存在的properties
(公寓)的periods
。
如何加入booking
表,以便仍查詢所有periods
?
使用LEFT JOIN
:
select property.address
from (
period
left join booking on period.propertyid = booking.propertyid)
...
SELECT property.address
FROM property
LEFT JOIN period ON period.propertyid = property.id
LEFT JOIN booking ON period.propertyid = booking.propertyid
WHERE period.type = 'available'
AND period.end >= '2016-01-25'
AND period.start <= '2016-01-20'
AND (booking.start > '2016-01-25' OR booking.start < '2016-01-20')
AND (booking.end > '2016-01-25' OR booking.end < '2016-01-20')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.