Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.10.31;
Скачать: CL | DM;

Вниз

Не поддерживается выбранное объединение (MS Access, D7, ADO)   Найти похожие ветки 

 
И. Павел ©   (2010-08-05 10:18) [0]

Я работаю с MS Access через ADO, Jet. Пишу такой запрос:

"SELECT j.schet, n.summa - sum(o.summa)" +
"FROM (nachisl AS n " +
"LEFT JOIN jilci AS j ON j.id = n.IDJilci) " +
"LEFT JOIN oplati AS o ON o.IDJilci = j.id " + " AND o.god = " + IntToStr(MainForm.RaschGod) + " AND o.mes = " + IntToStr(MainForm.RaschMes) + " " "WHERE n.god = " + IntToStr(MainForm.RaschGod) + " AND n.mes = " + IntToStr(MainForm.RaschMes) + " " +
"GROUP BY j.schet, n.summa;


Вылетает ошибка: "Не поддерживается выбранное объединение".
Если удалить один из Join, то ошибок не возникает. Но вроде бы некоторые запросы с несколькими Join у меня Access пропускает, т.е. он их выполнять может.
Подскажите, пожалуйста, как исправить запрос, чтобы не возникала эта ошибка?
Можно, конечно, сделать цикл с подзапросами, но, наверное, можно все сразу выбрать.

Заранее спасибо.


 
И. Павел ©   (2010-08-05 10:21) [1]

Вот такой текст запроса формируется:
 SELECT  j.schet, n.summa - sum(o.summa)
 FROM (nachisl AS n
 LEFT JOIN jilci AS j ON j.id = n.IDJilci)
 LEFT JOIN oplati AS o ON o.IDJilci = j.id AND o.god = 2010 AND o.mes = 8
 WHERE n.god = 2010 AND n.mes = 8
 GROUP BY j.schet, n.summa;


 
И. Павел ©   (2010-08-05 10:28) [2]

Вот так заработало!
"SELECT  j.schet, n.summa - sum(o.summa) " +
"FROM nachisl AS n, jilci AS j, oplati AS o " +
"WHERE j.id = n.IDJilci AND o.IDJilci = j.id  AND o.god = " + IntToStr(MainForm.RaschGod) + " AND o.mes = " + IntToStr(MainForm.RaschMes) + " " +
"AND n.god = " + IntToStr(MainForm.RaschGod) + " AND n.mes = " + IntToStr(MainForm.RaschMes) + " " +
"GROUP BY j.schet, n.summa;"


Но все-таки было бы интересно знать, почему Access ругается на первый запрос.


 
12 ©   (2010-08-05 10:58) [3]

там со скобками морока, что-то их много надо ставить
в A сразу надо писать в where все join

если только цель не сточить линии кожи на пальцах для не опознавания в дальнейшем в МВД %)


 
Anatoly Podgoretsky ©   (2010-08-05 11:02) [4]

> И. Павел  (05.08.2010 10:18:00)  [0]

Если у тебя есть Акцесс то построй запрос в его генераторе запросов, если
нет то в справку, там написано как правильно писать соединения, успех в
правильной установке скобок.


 
Anatoly Podgoretsky ©   (2010-08-05 11:05) [5]


> Вот так заработало!

Такой запрос хоть и работает, но идеологически неверен. Надо переписать с использование JOIN


 
И. Павел ©   (2010-08-05 11:59) [6]

> 12 ©

Спасибо.


> Anatoly Podgoretsky ©

Спасибо. Через редактор сделал по шагам - оказалось, что ругается на условия после ON во втором JOIN-е. Заключил их в скобки - ACCESS перестал ругаться:

"SELECT j.schet, n.summa - sum(o.summa)" +
"FROM (nachisl AS n " +
"LEFT JOIN jilci AS j ON j.id = n.IDJilci) " +
"LEFT JOIN oplati AS o ON (o.IDJilci = j.id " + " AND o.god = " + IntToStr(MainForm.RaschGod) + " AND o.mes = " + IntToStr(MainForm.RaschMes) + ") " +
"WHERE n.god = " + IntToStr(MainForm.RaschGod) + " AND n.mes = " + IntToStr(MainForm.RaschMes) + " " +
"GROUP BY j.schet, n.summa;"


 
Anatoly Podgoretsky ©   (2010-08-05 12:03) [7]

SQL в Акцесс немного странный.


 
Sergey13 ©   (2010-08-05 12:12) [8]

> [0] И. Павел ©   (05.08.10 10:18)

Если использовать параметры, то и самому будет проще разбираться в подобных дебрях.



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

Текущий архив: 2010.10.31;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.008 c
2-1281419524
linuxoid
2010-08-10 09:52
2010.10.31
помогите с алгоритмом


2-1281027372
Intranull
2010-08-05 20:56
2010.10.31
Назначение горячих клавиш для окна созданного на winapi


2-1280939572
istok
2010-08-04 20:32
2010.10.31
навигация по TADOStoredProc...


15-1279906954
Ламо777
2010-07-23 21:42
2010.10.31
Хоть я и не моряк, но тронуло


2-1281452943
DROWSY
2010-08-10 19:09
2010.10.31
Какая процедура отменяет изменения в текущей записи TIBDataSet,