访问涉及子表单的SQL NOT BETWEEN

时间:2012-03-16 23:21:39

标签: sql ms-access

我不知道如何以单词形式表达这个问题所以决定使用图片来帮助我。

这些是我的表格及其关系: enter image description here

这是我坚持的形式: enter image description here

我正在尝试制作表单,以便在输入开始日期和结束日期时,运行大篷车组合框的行源中的查询,其中显示在此期间未预订的所有大篷车。我现在的SQL技能有限,因为我正在为这个项目学习它们。这是我到目前为止所做的SQL查询:

SELECT tblCaravan.caravanID, tblCaravan.caravanType
FROM tblCaravan, tblCaravansWeeksBooked
WHERE (((tblCaravansWeeksBooked.startDate) Not Between [txtStartDate] And [txtEndDate]) 
AND ((tblCaravansWeeksBooked.endDate) Not Between [txtStartDate] And [txtEndDate]));

当使用访问中的宏进行焦点时,我有大篷车组合框自身重新查询。

问题是我所做的SQL不起作用,我看不出原因。我之前通过使用向导构建的两个查询使其成功:

SELECT tblCaravansWeeksBooked.startDate, tblCaravansWeeksBooked.endDate, tblCaravansWeeksBooked.caravanID
FROM tblCaravansWeeksBooked
WHERE (((tblCaravansWeeksBooked.startDate) Between [Start Date] And [End Date]) 
AND ((tblCaravansWeeksBooked.endDate) Between [Start Date] And [End Date]));

和     SELECT tblCaravan.caravanID,tblCaravan.caravanType     来自tblCaravan LEFT JOIN qryWeeksBooked ON tblCaravan.caravanID = qryWeeksBooked.caravanID     WHERE(((qryWeeksBooked.caravanID)Null));

我希望这里有人可以帮助我朝着正确的方向发展,感谢您给予的任何帮助。

杰克

1 个答案:

答案 0 :(得分:2)

试试这个

SELECT tblCaravan.caravanID, tblCaravan.caravanType
FROM tblCaravan
WHERE caravanID NOT IN (SELECT caravanID FROM tblCaravansWeeksBooked
                        WHERE startDate < Forms!MyForm!txtEndDate AND 
                              endDate > Forms!MyForm!txtStartDate)