将常量行结果添加到SQL查询 - MS Access

时间:2012-06-13 13:20:39

标签: sql ms-access dummy-data

说我有一个表“tblItems”:

*ID*    |     *Name*
1       |   First Item
2       |  Second Item

我希望在表单的下拉列表中填充它。我该如何添加一行:

ALL     |    SHOW ALL

成为

*ID*    |     *Name*
1       |   First Item
2       |  Second Item
ALL     |    SHOW ALL

将一个查询放在组合框的Row Source中?我无法找到Access语法来执行此操作..

AFAIK,我需要类似于

的语法
SELECT ID, Name FROM tblItems
UNION
SELECT 0, "All" FROM SOME.SYSTEM.DUMMY.TABLE

我找不到的是那个虚拟表的Access'版本。我真的不想要一个单独的表只是为一个表单存储一行......但是从我一直在阅读的内容中我可能不得不这样做。

5 个答案:

答案 0 :(得分:8)

你可以这样做:

select ID, Name
from tblItems
union all
select 'ALL', 'SHOW ALL'

如果你一直希望它显示在底部,你必须变得更复杂。

根据评论,我意识到Access不支持没有SELECT子句的FROM语句,这很烦人。解决方法是创建表tblAll(语法可能需要修改):

create table tblAll(ID varchar(15), Name varchar(30));
insert into tblAll(ID, Name) values ('ALL', 'SHOW ALL');

然后你可以这样做:

select ID, Name
from tblAll
union all
select str(ID) as ID, Name
from tblItems

答案 1 :(得分:6)

我所做的是使用SELECT TOP 1语句并使用现有的表名,所以它看起来像这样:

SELECT ID, Name FROM tblItems
UNION
SELECT TOP 1 'ALL', 'SHOW ALL' FROM tblItems

这将为您提供单行以及现有表格中的选择。您可以使用TOP 1行所需的任何表格。

答案 2 :(得分:2)

您可以使用UNION ALL,但是,常量和列之间不匹配(“ALL”不是整数)。您可以执行以下操作:

select ID, NAME from tblItems
union all
select 0, 'SHOW ALL'

在应用程序端,将ID 0解释为“SHOW ALL”。或者,将ID转换为字符串。

select str(ID), NAME from tblItems
union all
select 'ALL', 'SHOW ALL'

答案 3 :(得分:2)

只想修复Jeremy Holovacs'回答在MS Access中工作。这样您就可以使用相同的表而不必创建虚拟表。

SELECT ID, Name
FROM tblItems
UNION ALL
SELECT TOP 1 'ALL', 'SHOW ALL' 
FROM tblItems

答案 4 :(得分:2)

请注意,以下内容仅在表中有任何行时才有效,如果您有空表,则无效。

SELECT ID, Name
FROM tblItems
UNION ALL
SELECT TOP 1 'ALL', 'SHOW ALL' 
FROM tblItems