2013-07-10 74 views
1

我有兩個查詢,其中qryAvailability1返回日期被阻止用於保留,而qryAvailability2在任何保留髮生之前生成完全可用的日期。sql表達式將查詢替換爲sql生成而不匹配查詢

我結合他們在最後的「不匹配」的查詢定義可用日期預約:

qryAvailability1:

SELECT tblReservations.PropertyID, tblDates.Date 
FROM tblReservations, tblDates 
WHERE (((tblDates.Date) Between [tblReservations]![CheckIn] And [tblReservations]![CheckOut])); 

qryAvailability2:

SELECT tblProperties.PropertyID,tblDates.Date FROM tblProperties,tblDates;

最後的「不匹配」查詢:

SELECT qryAvailability2.PropertyID, qryAvailability2.Date 
FROM qryAvailability2 LEFT JOIN qryAvailability1 ON (qryAvailability2.Date=qryAvailability1.Date) AND (qryAvailability2.PropertyID=qryAvailability1.PropertyID) 
WHERE (((qryAvailability1.Date) Is Null)) 
ORDER BY qryAvailability2.PropertyID, qryAvailability2.Date; 

有沒有辦法有一個單獨的查詢語句到1個查詢,而不是三個?

換句話說,我需要用產生它們的sql語句(不管我嘗試過的都不起作用)替換對qryAvailability1qryAvailability2的引用。

回答

1

假設你的最終查詢工作(我沒有檢查它),然後結合所有三個:

SELECT qryAvailability2.PropertyID, qryAvailability2.Date 
FROM (
SELECT tblProperties.PropertyID, tblDates.Date FROM tblProperties, tblDates 
) qryAvailability2 LEFT JOIN (
SELECT tblReservations.PropertyID, tblDates.Date 
FROM tblReservations, tblDates 
WHERE (((tblDates.Date) Between [tblReservations]![CheckIn] And [tblReservations]![CheckOut])) 
) qryAvailability1 ON (qryAvailability2.Date=qryAvailability1.Date) AND (qryAvailability2.PropertyID=qryAvailability1.PropertyID) 
WHERE (((qryAvailability1.Date) Is Null)) 
ORDER BY qryAvailability2.PropertyID, qryAvailability2.Date; 
+0

它工作正常。非常感謝! – Michael