Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.10.31;
Скачать: [xml.tar.bz2];

Вниз

Не поддерживается выбранное объединение (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.061 c
2-1281093695
Stenfit
2010-08-06 15:21
2010.10.31
TXMLDocument


3-1247144361
abhtr
2009-07-09 16:59
2010.10.31
Последняя запись в DBGride


15-1280008661
картман
2010-07-25 01:57
2010.10.31
XSD-схемы


15-1280014034
Иксик
2010-07-25 03:27
2010.10.31
Контекстная реклама или совпадение???


15-1279991329
SaveVideo
2010-07-24 21:08
2010.10.31
Не получается сохранить это видео





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский