我对 SQL 比较陌生,并试图为我创建的 3 个表(A、B 和 C)的数据库设计一个查询。这是一个查询,允许用户从表 A 中输入两个参数(日期和行),如果用户将行输入留空,则返回所有记录。这很好用。
现在我的问题是我也包含了两个子查询。这些是分别使用第一个查询的共享参数输入查询表 B 和 C。如果我尝试允许空用户输入返回所有记录,我无法正确显示结果。
有效的主查询语句:
HAVING (((A.Line)=[Enter Line]) AND ((A.Day)>=[Start Date] And (A.Day)<=[End Date])) OR (((A.Day)>=[Start Date] And (A.Day)<=[End Date]) AND (([A].[line] Like [Enter Line]) Is Null))
使用 where 或 have on 子查询尝试相同的操作不起作用:
where (b.day)>=[Start Date] And (b.day)<=[End Date] And b.line=[Enter Line] or (((b.Day)>=[Start Date] And (b.Day)<=[End Date]) AND ([b].[line] Like [Enter Line]) Is Null))
如果我删除试图解释空输入的 or 语句,子查询可以正常工作并返回正确的结果,但是当用户输入为空白时,我无法返回所有记录。
我很感激任何帮助!我意识到这可能非常混乱和低效。