Проблема подзапроса в Access 2007 - PullRequest
0 голосов
/ 23 июня 2019

У меня есть проект, использующий Access 2007, но я пытаюсь написать простой подзапрос. Я пытаюсь получить результаты из таблицы следующих 6 вхождений после того, как определенное соотношение было записано.

Я надеялся, что следующий код будет работать в Access:

SELECT [runner name], [race ID], [race date], [placing], [class]
FROM runners
WHERE [runner name] IN
                 (SELECT [runner name] from 6F Full Form WHERE [ratio] >9       
ORDER BY [runner name], [race ID], [date], [placing], [class];

Я получаю сообщение об ошибке ниже. NB 6F Full Form - это запрос, который я написал, и я пытаюсь использовать его в подзапросе.

Синтаксическая ошибка в выражении запроса '[имя участника] IN (ВЫБРАТЬ [имя участника] из 6F полной формы ГДЕ [соотношение]> 9

Ответы [ 2 ]

0 голосов
/ 23 июня 2019

Проблема с вашим текущим кодом SQL состоит в том, что имена полей / таблиц / запросов, содержащие пробелы или зарезервированные слова , должны быть заключены в квадратные скобки - следовательно,

from 6F Full Form WHERE

должно быть написано:

from [6F Full Form] WHERE

У вас также есть потенциальная опечатка в вашем предложении order by:

SELECT ..., [race date], ...
...
ORDER BY ..., [date], ...;
                 ^--------------- Should this be [race date]?

Стоит добавить, что вы также можете добиться этого с помощью объединений,например:

select
    r.[runner name],
    r.[race id],
    r.[race date],
    r.[placing],
    r.[class]
from
    runners r inner join
    (select distinct f.[runner name] from [6f full form] f where f.[ratio] > 9) q 
    on r.[runner name] = q.[runner name]
order by
    r.[runner name],
    r.[race id],
    r.[race date],
    r.[placing],
    r.[class]
0 голосов
/ 23 июня 2019

Попробуйте это:

 (SELECT [runner name] 
 FROM [6F Full Form] 
 WHERE [ratio] >9       
 ORDER BY [runner name], [race ID], [date], [placing], [class]);
...