Добавление результата постоянной строки в SQL Query-MS Access

скажем, у меня есть таблица "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 для поля со списком? Я не смог найти синтаксис, чтобы сделать это..

AFAIK, мне нужен синтаксис, подобный

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

то, что я не могу найти, это версия Access этой фиктивной таблицы. Я действительно не хочу иметь отдельная таблица только для хранения одной строки для одной формы... но, судя по тому, что я читал, возможно, придется.

5 ответов


вы могли бы сделать что-то вроде этого:

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

то, что я делаю, это использовать SELECT TOP 1 оператор и использовать существующее имя таблицы, так что это выглядит следующим образом:

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

Это даст вам одну строку вместе с выбором из существующей таблицы. Вы можете использовать любую таблицу для TOP 1 строки.


можно использовать UNION ALL, однако, у вас есть несоответствие между константами и столбцами ("все" не является целым числом). Вы можете сделать что-то вроде:

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

на стороне приложения интерпретируйте идентификатор 0 как "показать все". Или преобразуйте ID в строку.

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

просто хочу исправить ответ Джереми Holovacs на работу в MS доступа. Таким образом, вы можете использовать одну и ту же таблицу и не создавать фиктивную таблицу.

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

имейте в виду, следующее работает только если в таблице есть какие-либо строки, Если у вас есть пустая таблица, она не будет работать.

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