Запрос в запросе

CasperPlay

Доброе время сутокЕсть некий запрос Query1 который нормально отрабатывается. Пытаюсь сделать другой запрос с использованием результата первого. Пишу так:
SELECT *
FROM (SELECT * FROM Query1) AS Result;
Access сохраняет новый запрос но при запуске пишет ошибку. Когда я захожу в редактирование запроса, то мой запрос уже выглядит так:
SELECT *
FROM [SELECT * FROM Query1; ] AS Result;
20 ответов

CasperPlay

Доброе время сутокЕсть некий запрос Query1 который нормально отрабатывается. Пытаюсь сделать другой запрос с использованием результата первого. Пишу так:
SELECT *
FROM (SELECT * FROM Query1) AS Result;
Access сохраняет новый запрос но при запуске пишет ошибку. Когда я захожу в редактирование запроса, то мой запрос уже выглядит так:
SELECT *
FROM [SELECT * FROM Query1; ] AS Result;
Наверное, пазаработчики Акса специально такую фичу заложили, чтобы чушь не писали. Без обиды: каков смысл такого запроса? Если это просто пример, то в не просто примере такая же проблема или нет?


CasperPlay

Это пример.Просто заметил, что у меня во многих запросах используется один и тот же кусок SQL запроса. Хотел оптимизировать и заменить один и тот же текст подзапросом но что-то пока не получается.Честно говоря не вижу что я тут такого смешного написал?Строка :
SELECT * FROM Query1
Нормально ведь отрабатывается…


CasperPlay

SELECT * FROM (SELECT * FROM Query1) AS Result;
Ваша конструкция действительно нелогична. Нет смысла в таком подчиненном запросе. Просто напишите: SELECT * FROM Query1;
SELECT * FROM [SELECT * FROM Query1; ] AS Result;
Десвительно компилятор запросов вносит свои коррективы, только выглядит это не так, как вы показали, а: SELECT * FROM [SELECT * FROM Query1].AS Result;И эта конструкция работает, пока вы не надумаете корректировать текст запроса.В А2007 разработчики этот глюк исправили, но внесли другой. Теперь не работают ссылки на внешние БД вида: SELECT * FROM [dBase 5.0;DATABASE=C:\DBF].MyFile; Теперь выделенное красным принудительно заменяется на круглые скобки и запрос не работает.


CasperPlay

Доброе время сутокЕсть некий запрос Query1 который нормально отрабатывается. Пытаюсь сделать другой запрос с использованием результата первого. Пишу так:
SELECT *
FROM (SELECT * FROM Query1) AS Result;
Access сохраняет новый запрос но при запуске пишет ошибку. Когда я захожу в редактирование запроса, то мой запрос уже выглядит так:
SELECT *
FROM [SELECT * FROM Query1; ] AS Result;
...и шо - правда Акцесс, во-втором случае, дописал точку с запятой после Query1??шота не верится...


CasperPlay

Я ж черным по серому написал, что это всего лишь пример!!! Вместо «
SELECT * FROM
» у меня килограммы всего разного будет накручено.При вводе
SELECT * FROM [SELECT * FROM Query1].AS Result;
Выдает ошибку: Disk or network errorВ режиме редактирование теперь все выглядит так:
SELECT *
FROM [SELECT * FROM Query1].[AS] AS Result;


CasperPlay

У меня стоит Access 2003 ENG SP3 11.8204.8324


CasperPlay

CasperPlay,если сохранить запрос, то так прокатывает без проблем:
SELECT *
FROM Запрос1;
извращенец


CasperPlay

При вводе
SELECT * FROM [SELECT * FROM Query1].AS Result;
Выдает ошибку: Disk or network error
Между точкой и AS надо поставить пробел.


CasperPlay

Пусть лучше пишет ASS


CasperPlay

Сталкивался именно с такой проблемой, что у Автора - и именно в такой версии Access.Прошу не путать с заменой "... (...) As BlaBlaBla" на "... [...]. As BlaBlaBla" - меняет именно так, как написал Автор - на точку с запятой и в итоге запрос не хочет работать вообще. Попытка редактировать через DAO закончилась тем же - запрос при компилляции был изковеркан и не выполнялся.Вылечилось переходом на Access 2007. Запросы не коверкаются.


CasperPlay

а вот и доктор.


CasperPlay

Сталкивался именно с такой проблемой, что у Автора - и именно в такой версии Access.....
...низнаю, никогда не сталкивался,но с учётом этого
У меня стоит Access 2003 ENG SP3 11.8204.8324
может стоит попробовать знаменитый постфикс от всех болезней ? )))


CasperPlay

а вот и доктор.
а тебе на лесницу пора, а то тявкаешь тут


CasperPlay

Спасибо помогло!!!А можно как-то поподробней по поводу квадратных скобок? Зачем они вообще нужны? о чем говорит точка?


CasperPlay

Пусть лучше пишет ASS
Пусть. Но без пробела у меня (в 2007) тоже выдалась ошибка про потерю сети, а с пробелом всё заработало, как в аптеке.


CasperPlay

а тебе на лесницу пора, а то тявкаешь тут
+1Действительно, пусть хоть в одном месте гадит, а то практически каждый топик своим дерьмом метит


CasperPlay

А можно как-то поподробней по поводу квадратных скобок? Зачем они вообще нужны? о чем говорит точка?
Квадратные скобки с точкой когда-то появились как недокументированная фича Аксесса, когда он еще не допускал селект фром из круглых скобок с другим селектом. Сегодня он уже давно допускает, но вариант с квадратными скобками и точкой до сих пор поддерживается.


CasperPlay

но вариант с квадратными скобками и точкой до сих пор поддерживается.
А чего сам же и ругается? Два дня назад делал сложный перекрестный запрос, так он мне постоянно квадратные скобки делал, а потом сам же и ругался пока я вручную на круглые не менял. :)


CasperPlay

А чего сам же и ругается?
Потому что баг.


CasperPlay

А чего сам же и ругается? Два дня назад делал сложный перекрестный запрос, так он мне постоянно квадратные скобки делал, а потом сам же и ругался пока я вручную на круглые не менял. :)
Можно попробовать не открывать его в конструкторе, а только в режиме SQL, тогда он не меняет скобки, либо, если уже поменял, то хоть не ругается.