Добавление результата постоянной строки в 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