Вниз
Скачать: CL | DM;

Вложенные SQL запросы в СУБД Access   Найти похожие ветки 

← →
Kostafey ©   (2007-05-04 01:52) [0]

В прошлый раз имел дело с MS SQL Sever, теперь Access.
Ужесть... Но вопрос не в этом.

Скажите, пожалуйста, можно ли в Access реализовать что-то подобное


SELECT * FROM (
 SELECT..
 FROM ...
 WHERE ...
) a

и так далее, т.е. реализовать вложенный(е) запрос(ы) ?

Есть ли вообще литература по SQL в Access
и что-нибудь по контролю и восстановлению ссылочной целостности БД в Access ?


← →
EvS ©   (2007-05-04 09:33) [1]


> можно ли в Access реализовать что-то подобное


Можно


← →
Kostafey ©   (2007-05-04 09:59) [2]

Ну на том спасибо, порадовали, а синтаксис как выглядеть будет ?
Так как в [0] не работает.

P.S. Шутка по поводу что такое "..." будет очень удачной, но я уже пошутил первым !


← →
ЮЮ ©   (2007-05-04 10:06) [3]

в MS Access 2003 такое работет:

SELECT * FROM (
SELECT DISTINCT Договор.[На Должность]
FROM Договор
) a
ORDER BY 1;

так что всё дело в ... Да и ошибку озвучит не мешало бы


← →
sniknik ©   (2007-05-04 10:54) [4]

> Так как в [0] не работает.
естественно, "..." синтаксисом не предусмотрено.  

> но я уже пошутил первым !
смысл не в том кто первый, смысл в том кому это надо...

вообще у вас что конкурс под лозунгом "кто меньше всего скажет, но тем не менее получит ответ"?

> Да и ошибку озвучит не мешало бы
зачем? просто переносим ветку в прочее и продолжаем отвлеченно трепаться. порадуется гораздо больше народу чем успешному решению "проблемы".


← →
Kostafey ©   (2007-05-04 12:24) [5]

Уважаемые мастера ЮЮ, sniknik !

Прошу прощения ! Поторопился вчера сюда постить.
Все дело вот в чем.

Тестировал запрос я в "запросе на выборку" Access.
Если вставить в него вот такой запрос (на этот раз цитирую):

SELECT
Dogovor.NomerDogovora as [Номер договора],
Dogovor.NomerActa as [Номер акта],
TipDogovora.Tip as [Тип договора],
Dogovor.DataDogovora as [Дата договора],
Subject.Tip as [Тип субъекта],
Subject.Familiya as [Фамилия],
Subject.Naimenovanie as [Наименование],
Location.Tip as [Тип страны]

FROM Dogovor, Subject, TipDogovora, Location
WHERE Dogovor.D_S_id = Subject.S_id
 and Dogovor.D_TD_id = TipDogovora.TD_id
 and Subject.S_L_id = Location.L_id

Он успешно выполняется. Запрос сохраняю, закрываю.
Заново открываю. Вид запроса уже изменлся:

SELECT Dogovor.NomerDogovora AS [Номер договора], Dogovor.NomerActa AS [Номер акта], TipDogovora.Tip AS [Тип договора], Dogovor.DataDogovora AS [Дата договора], Subject.Tip AS [Тип субъекта], Subject.Familiya AS Фамилия, Subject.Naimenovanie AS Наименование, Location.Tip AS [Тип страны]
FROM Dogovor, Subject, TipDogovora, Location
WHERE Dogovor.D_S_id=Subject.S_id And Dogovor.D_TD_id=TipDogovora.TD_id And Subject.S_L_id=Location.L_id;

Но он выполняется.
Дописываю:

select *
from (
SELECT Dogovor.NomerDogovora AS [Номер договора], Dogovor.NomerActa AS [Номер акта], TipDogovora.Tip AS [Тип договора], Dogovor.DataDogovora AS [Дата договора], Subject.Tip AS [Тип субъекта], Subject.Familiya AS Фамилия, Subject.Naimenovanie AS Наименование, Location.Tip AS [Тип страны]
FROM Dogovor, Subject, TipDogovora, Location
WHERE Dogovor.D_S_id=Subject.S_id And Dogovor.D_TD_id=TipDogovora.TD_id And Subject.S_L_id=Location.L_id;
) a

Выдает: "Ошибка синтаксиса в предложении FROM"
Вот тут я и сбился с толку.

Однако если обратится к исходному варианту, т.е.

select *
from (
SELECT
Dogovor.NomerDogovora as [Номер договора],
Dogovor.NomerActa as [Номер акта],
TipDogovora.Tip as [Тип договора],
Dogovor.DataDogovora as [Дата договора],
Subject.Tip as [Тип субъекта],
Subject.Familiya as [Фамилия],
Subject.Naimenovanie as [Наименование],
Location.Tip as [Тип страны]

FROM Dogovor, Subject, TipDogovora, Location
WHERE Dogovor.D_S_id = Subject.S_id
 and Dogovor.D_TD_id = TipDogovora.TD_id
 and Subject.S_L_id = Location.L_id
) a

То он прекрасно работает.

Сохраняю запрос. Закрываю. Заново открываю.
Он несколько видоизменяется, но продолжает работать:

SELECT *
FROM [SELECT
Dogovor.NomerDogovora as [Номер договора],
Dogovor.NomerActa as [Номер акта],
TipDogovora.Tip as [Тип договора],
Dogovor.DataDogovora as [Дата договора],
Subject.Tip as [Тип субъекта],
Subject.Familiya as [Фамилия],
Subject.Naimenovanie as [Наименование],
Location.Tip as [Тип страны]

FROM Dogovor, Subject, TipDogovora, Location
WHERE Dogovor.D_S_id = Subject.S_id
 and Dogovor.D_TD_id = TipDogovora.TD_id
 and Subject.S_L_id = Location.L_id
]. AS a;


На самом деле все эти сохранения/перезапуски, открытия/закрытия мне все равно
не понадобятся, т.к. тексты запросов будут хранится во внешних файлах.

Спасибо и еще раз прошу прощения за невнимательность.


← →
Kostafey ©   (2007-05-04 12:30) [6]

Вся ошибка заключается в ; которой заканчивается запрос.
Access ее зачем - то сам добавляет.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.027 c
9-1149824458
tButton
2006-06-09 07:40
2007.05.20
откопал =)


1-1174730969
rockman_
2007-03-24 13:09
2007.05.20
Не видно курсор в StringGrid


2-1177733162
Cj
2007-04-28 08:06
2007.05.20
Программа открывающая файл


2-1178196382
pavel_guzhanov
2007-05-03 16:46
2007.05.20
зависание при вставке записи в базу


15-1177149836
borodaj
2007-04-21 14:03
2007.05.20
обработка изображений




   Наверх