Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Access中的查询(添加缺少的值)_Sql_Ms Access - Fatal编程技术网

Sql Access中的查询(添加缺少的值)

Sql Access中的查询(添加缺少的值),sql,ms-access,Sql,Ms Access,我有两张桌子,指南和可用性指南是指南列表,可用性是已知特定指南信息的日期列表。例如,2014年3月3日-指南3-可用或2014年3月5日-指南1-忙。如果还不知道某一天指南的可用性,则可用性中根本没有该天的条目 我想写一个查询,返回未来三天内所有指南的状态列表。如果状态未知,则会显示未知 我相信在SQL中,这项任务肯定是可行的,但我不得不在Access 2013中编写一个Web应用程序。这意味着我必须在Access中使用查询编辑器。有专业知识的人能提供一些指导吗?如果问题中有什么不清楚的地方,一

我有两张桌子,指南可用性指南是指南列表,可用性是已知特定指南信息的日期列表。例如,2014年3月3日-指南3-可用或2014年3月5日-指南1-忙。如果还不知道某一天指南的可用性,则可用性中根本没有该天的条目

我想写一个查询,返回未来三天内所有指南的状态列表。如果状态未知,则会显示未知

我相信在SQL中,这项任务肯定是可行的,但我不得不在Access 2013中编写一个Web应用程序。这意味着我必须在Access中使用查询编辑器。有专业知识的人能提供一些指导吗?如果问题中有什么不清楚的地方,一定要说出来

Example query output:
03/03/2013 - Guide 1 - Busy
03/03/2013 - Guide 2 - Unknown
03/03/2013 - Guide 3 - Unknown
04/03/2013 - Guide 1 - Available
04/03/2013 - Guide 2 - Available
04/03/2013 - Guide 3 - Unknown
05/03/2013 - Guide 1 - Unknown
05/03/2013 - Guide 2 - Unknown
05/03/2013 - Guide 3 - Unknown

Table: Guides
Guide 1
Guide 2
Guide 3

Table: Availability
03/03/2013 - Guide 1 - Busy
04/03/2013 - Guide 1 - Available
04/03/2013 - Guide 2 - Available

旁白:有人建议我可能需要制作第三张表格,列出未来10年的所有日期。如果它有助于解决问题,这不会是一个问题。

如果您仅限于访问,您将无法使用递归CTE(如果感兴趣,请通过谷歌搜索了解它们)

因此,您必须创建一个包含所有日期的表。如果表名为AllDates,并且日期字段为Dte,则查询将如下所示(您可能需要按日期范围筛选以限制返回的行数,否则您将看到所有10年的记录):

对于Access的web版本,您需要使用2个查询。第一个(
DatesGuides
)将列出所有日期的所有指南,其语法如下:

SELECT Guides.Guide, AllDates.Dte
FROM AllDates, Guides;
第二个查询将与第一个查询保持连接。其语法是:

SELECT DatesGuides.Dte, DatesGuides.Guide, Nz([Status],'Unknown') AS Expr1
FROM Availability RIGHT JOIN DatesGuides ON Availability.Dte = DatesGuides.Dte AND Availability.Guide = DatesGuides.Guide;

如果您仅限于访问,您将无法使用递归CTE(如果感兴趣,可以通过谷歌搜索了解它们)

因此,您必须创建一个包含所有日期的表。如果表名为AllDates,并且日期字段为Dte,则查询将如下所示(您可能需要按日期范围筛选以限制返回的行数,否则您将看到所有10年的记录):

对于Access的web版本,您需要使用2个查询。第一个(
DatesGuides
)将列出所有日期的所有指南,其语法如下:

SELECT Guides.Guide, AllDates.Dte
FROM AllDates, Guides;
第二个查询将与第一个查询保持连接。其语法是:

SELECT DatesGuides.Dte, DatesGuides.Guide, Nz([Status],'Unknown') AS Expr1
FROM Availability RIGHT JOIN DatesGuides ON Availability.Dte = DatesGuides.Dte AND Availability.Guide = DatesGuides.Guide;


db引擎应使用什么数据源为您提供2013年3月5日日期的行?您的两张表中都没有该日期,但它必须来自某个地方。你们有一个单独的日历表,每个日期一行吗?如果没有,您愿意创建一个吗?指南和可用性表之间有关系吗?@HansUp如果有必要,我不介意创建一个包含一长串日期的表。但是,如果可能的话,我更愿意使用第二个查询。如果两个表之间存在关系,那么我认为您只需要左连接和iif函数。我删除了该注释,因为它听起来太刺耳了。db引擎应该使用什么数据源为您提供日期为2013年3月5日的行?您的两张表中都没有该日期,但它必须来自某个地方。你们有一个单独的日历表,每个日期一行吗?如果没有,您愿意创建一个吗?指南和可用性表之间有关系吗?@HansUp如果有必要,我不介意创建一个包含一长串日期的表。不过,如果可能的话,我更愿意使用第二个查询。如果两个表之间存在关系,那么我认为您只需要左连接和iif函数。我删除了该注释,因为它听起来太刺耳了。非常感谢。我不知道转换成可视化查询编辑器有多容易。你看,问题是我甚至不能打开SQL输入框,必须在这样一个系统中完成所有工作)。这样的系统应该有一个“查看”按钮,里面有一些选项,包括“SQL”,恐怕没有。有了桌面数据库,它就可以了,但对于Access 2013 Web应用程序,它被完全禁用。遗憾的是,帮助文件中说的一件事是“联合”查询不受支持。有什么办法吗?有限的查询集真是太痛苦了。我不相信任何人会看到这个对话,因为这个问题不在“新问题”列表的最前面。因此,如果您有其他问题,请再次询问,确保您没有制作“副本”,否则将被标记为“副本”。非常感谢。我不知道转换成可视化查询编辑器有多容易。你看,问题是我甚至不能打开SQL输入框,必须在这样一个系统中完成所有工作)。这样的系统应该有一个“查看”按钮,里面有一些选项,包括“SQL”,恐怕没有。有了桌面数据库,它就可以了,但对于Access 2013 Web应用程序,它被完全禁用。遗憾的是,帮助文件中说的一件事是“联合”查询不受支持。有什么办法吗?有限的查询集真是太痛苦了。我不相信任何人会看到这个对话,因为这个问题不在“新问题”列表的最前面。因此,如果您有其他问题,请再次询问,确保您没有制作“副本”,否则将被标记为“副本”。