2015-06-23 2 views
2

Я попытался с помощью UNION, но я использовал, чтобы получить это сообщение:Как добавить пользовательские строки в SQL-запрос в MS Access?

вход Запрос должен содержать как минимум одну таблицу или запрос

Запрос я попытался было:

SELECT NULL AS ID, NULL AS Item 
    UNION 
    SELECT Items.ID AS ID, Items.Item as Item 
    FROM Items 
    INNER JOIN People 
    ON Items.PID=People.PID 
    WHERE People.Name='John'; 

Оба выберите операторы ОК независимо.

ответ

1

Используйте Dual таблицу

SELECT NULL AS ID, NULL AS Item 
FROM dual 
UNION ALL 
SELECT i.ID AS ID, i.Item AS Item 
FROM Items i 
INNER JOIN People p ON i.PID = p.PID 
WHERE p.Name = 'John'; 
+2

Я не верю, что Access имеет двойной стол, хотя, если вы присоединитесь своим ответ с HansUp-х отсюда: http://stackoverflow.com/questions/7933518/table -less-union-query-in-ms-access-jet -ace, тогда он должен работать. – Newd

+0

Он использует DUAL в Access ... @Newd – Hituptony

+0

@Hituptony Вы уверены? У вас есть ссылка, которая ссылается на это? – Newd

0

Вы должны указать, какие таблицы вы хотите, чтобы ваши данные. Попробуйте следующее:

SELECT NULL AS ID, NULL AS Item 
FROM Items INNER JOIN People ON Items.PID=People.PID 
UNION 
SELECT Items.ID AS ID, Items.Item as Item 
FROM Items INNER JOIN People ON Items.PID=People.PID 
WHERE People.Name='John'; 
1

В MS Access вам необходимо использовать kludge. Это может сработать:

SELECT TOP 1 NULL AS ID, NULL AS Item 
FROM (SELECT TOP 1 * 
     FROM ITEMS 
     ORDER BY ID 
    ) as i 
UNION ALL 
SELECT Items.ID AS ID, Items.Item as Item 
FROM Items INNER JOIN 
    People 
    ON Items.PID = People.PID 
WHERE People.Name = 'John'; 

Единственная цель подзапроса - получить таблицу с одной строкой. Помните, что TOP 1 в MS Access может возвращать более одной строки, если есть связи.

+0

плюс 1 для обучения меня новому слову «kludge» ... и хороший ответ – Matt

0

Возможно, если заказ союза запроса изменен, чтобы начать с формируемым запросом и нулевым запросом следовать:

SELECT Items.ID AS ID, Items.Item as Item 
FROM Items 
INNER JOIN People 
ON Items.PID=People.PID 
WHERE People.Name='John' 

union 

SELECT NULL AS ID, NULL AS Item