powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / конструктор запросов .... помогите выжить
25 сообщений из 26, страница 1 из 2
конструктор запросов .... помогите выжить
    #32546786
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
есть вот такая ллабуда

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT dd.имя, движение.резидент, dd.дата, склад.номер AS [наименование номер], склад.наименование, склад.поступление, склад.цена_поставщика, склад.цена_вх, ([склад].[цена_пр]-[склад].[цена_вх])/IIf([склад].[цена_вх]= 0 , 1 ,[склад].[цена_вх]) AS процент, [поступление]*[цена_вх] AS [сумма вх], [поступление]*[цена_поставщика] AS сумма, [комитенты отгружено].Sum_количество AS продано, [резерв сумма1].количество AS резерв, [списано количество].списано, склад.остаток, склад.склад
FROM pic, движение RIGHT JOIN ((([списано количество] RIGHT JOIN ((склад LEFT JOIN списано ON склад.номер = списано.товарНомер) LEFT JOIN [резерв сумма1] ON склад.номер = [резерв сумма1].товар) ON [списано количество].товарНомер = склад.номер) LEFT JOIN [SELECT покупатель_товар.номер, Sum(покупатель_товар.количество) AS Sum_количество
FROM покупатель_покупки INNER JOIN (покупатель_товар INNER JOIN (SELECT партия.номер, партия.имя, партия.дата
FROM партия
GROUP BY партия.номер, партия.имя, партия.дата
HAVING (((партия.имя)= 1307 ))) AS ff ON покупатель_товар.номер = ff.номер) ON покупатель_покупки.код = покупатель_товар.код
WHERE (((покупатель_покупки.отгрузка)=- 1 ))
GROUP BY покупатель_товар.номер]. AS [комитенты отгружено] ON склад.номер = [комитенты отгружено].номер) RIGHT JOIN [SELECT партия.номер, партия.имя, партия.дата
FROM партия
GROUP BY партия.номер, партия.имя, партия.дата
HAVING (((партия.имя)= 1307 ))
]. AS dd ON склад.партия = dd.номер) ON движение.покупка = склад.партия
GROUP BY dd.имя, движение.резидент, dd.дата, склад.номер, склад.наименование, склад.поступление, склад.цена_поставщика, склад.цена_вх, ([склад].[цена_пр]-[склад].[цена_вх])/IIf([склад].[цена_вх]= 0 , 1 ,[склад].[цена_вх]), [поступление]*[цена_вх], [поступление]*[цена_поставщика], [комитенты отгружено].Sum_количество, [резерв сумма1].количество, [списано количество].списано, склад.остаток, склад.склад;

она создана в конструкторе запросов

в режиме SQL удаляю pic, из этого текста, запускаю - работает(в данном случае пофигу , чо выдает)
далее в режиме SQL вставляю тоже самоё pic,
выдает ошибку
не поддерживается выражение объединения

нада составить запрос со встроенным запросом , аналогичные уже там есть ,
но не могу . даже простую таб не могу вставить
в чём дело?

куда руки прицепить???
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546798
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
квадратные скобки ]. замени на )
"номер]. AS " --->"номер) AS "
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546801
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
во всех местах
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546803
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
обсолютно поровну


делал....
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546816
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да и затрахался я менять скобки.....
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546855
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробуй добиться того, чтобы по крайней мере в выражении FROM (а лучше - во всем запросе)
не встречались конструкции вида [комитенты отгружено] - имена с пробелами в прямых кавычках. Точно полегчает.
Но не сильно, в смысле - не универсально.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546879
io
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GROUP BY - я так понял ты пытаешся использовать вместо SELECT DISTINCT ...
перепиши свои запросы на DISTINCT тогда и код отладить будет проще и читабельней он будет.
А если нужен GROUP BY то используй его во внешнем запросе, нафига он нужун в остальных???
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546882
ищ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
раз затрахался, то делай сохраненные запросы, а потом своди их воедино
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546896
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати - замечание io - очень шибко хорошее.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546908
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот как раз та часть, что в скобках - в "сохраненном запросе" хорошо будет жить. как ищ говорит.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32546937
Витал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А джойн к pic_у нужон коль груп бай?
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547009
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я может быть не в тему, но хочу уточнить: ты этот запрос пишешь в модуле или в конструкторе запросов?
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547063
мдя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
какой аксесс?
если > 97, то можно заменить [SElect ...]. AS dd на (SELECT ...) AS dd - после этого будет проще в отладке. (кстати наличие конструкции (даже 2-х, как я увидел) опровергает предположение о чисто "конструкторском" происхождении запроса). Но не факт что не станет сильно медленнее (не факт, что так вставленные подзапросы не задают порядок выполнения).

если оставить - надо следить за сохранением точки в конструкциях
[Select ...]. AS subq
после правки в режиме конструктора (аксесс ее может удалять сам, но без нее не считает заключенные в [] запросы)

и еще: скопируй текст "работающего" запроса в окно нового запроса. Если он там будет выполняться - то проблема в "фоновом" редактировании аксессом текстов при переключении в режим конструктора. Если нет (сразу откажется) - то у тебя выполняется "не этот запрос" а его некое "компилированное" представление, откуда-то унаследованное и не менявшееся. А текущая версия аксесса не понимает синтаксис, но понимает сохраненную "откомпилированную" версию запроса. (может джеты отличаются, может сервис паки).
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547088
Фотография Daf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дело в том, что в конструкторе запросов Access меньше символов воспринимает:

Справка из Access'97:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Спецификации запросов


Атрибут	Максимальное число
Число наложенных связей	 32  на таблицу минус число индексов, построенных по полям или комбинациям полей, не участвующих в сортировке.
Количество таблиц в запросе	 32 
Число полей в наборе	 255 
Размер набора записей	 1  Гбайт
Предел сортировки	 255  символов в одном или нескольких полях
Число уровней вложенных запросов	 50 
Число символов в ячейке в бланке запроса	 1024 
Число символов в параметрическом запросе	 255 
Количество операторов AND в предложениях 
WHERE или HAVING	 40 
Число символов в инструкции SQL 	примерно  64000 

А в твоем запросе знаков без пробелов 1710, а с пробелами 1859.

Может быть в этом проблема. У меня похожее было. Пока запрос не сохранишь или в режиме SQL не посмотришь - все работает. Только сохранил или режиме SQL посмотрел начинается: ругается вообще не потеме и работать не хочет.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547117
мдя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наврал (выше)

похоже проблема то проста:
полное произведение + OUTER (LEft/Right) JOIN (с одной из таблиц)
- оно "ни по какому" не поддерживается - ни в конструкторе/ ни в SQL, но сообщения, что интересно, разные.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547224
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Аксесс'97 то работать точно не будет конструкция (SELECT ...). AS, для этого его надо сохранить отдельным запросом...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547229
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опаньки, а так
Код: plaintext
FROM pic ,  движение RIGHT JOIN
насколько я в курсе писать незяяя... причём полюбому

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547244
Sfagnum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я бы сделал бы следующим образом...
сохранил подзапросы [комитенты отгружено] и dd под этими же именами и из запроса бы их убрал, а потом уже в конструкторе пытался бы привентить енту табличку как надо...
ну а потом после успешного прикручивания вернул бы усё обратно...

Сделать можно всё!!!
Только бы знать как...
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547586
Rivkin Dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я сильно в подробности не вдавался тут, но по горькому опыту работы с Ивритом могу сказать, что проблема может быть тривиальной: ребята, если хотите жить с Акцесом (а в прочем, и с другими БД) дружно, не давайте названиям объектов Акцеса (таблицам, формам, запросам и т.д.) имен ни на каком другом языке кроме английского и поостерегитесь в этих именах ставить пробелы, лучше пользоваться т.н. Венгерской записью. И помня свой опыт работы с А2 - не заводите слишком сложных наворотов в одном запросе, лучше их разделить на подзапросы.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547632
вадя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо за внимание!

постараюсь разъяснить и уточнить( на по порядку , а как мысль идет)
во-первых всё ХР. sp1/sp1-sp3

"сохранённые запросы" стараюсь не использовать т.к. по первости их столько наплодил , что теперь не знаю котоый из них используется или блок/форма удалены за ненужностью или в модуле что изменено. конструктор использую только для конструирования запроса далее строку SQL использую в модуле.
(хорошо это или плохо - не знаю , надоело плодить запросы..)


не встречались конструкции вида [комитенты отгружено]
т.е. это для всех языков (иврит и ему аналогичные по письму - особая тема) - русификация офиса ничем не отличается от французикации, итальянизациии т.д. - это по поводу использования только английского.
а саму конструкцию - она ведь допустима, значит должна работать. ???



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

1)вполне возможно. приведенный запрос построен в графическом конструкторе
переписывать по предложенному варианту возможно, но как это будет преобразованно в графический вид.
в графическом виде всё более наглядно.
ежели мне надо строку из модуля VBA
str="select........."
перевести вграфический вид я делаю
debug.print str
ctrl+G
и копирую и вставляю в конструктор запросов в режиме SQL- далее в режим графики ....
возможно это изврат......но вспоминать нужен сохраненный запрос или нет меня затрахало. на быстродействие заметно не влияет.
2)как по быстродействию GROUP BY и SELECT DISTINCT ...???
выберу быстодействие

автор
опаньки, а так
FROM pic, движение RIGHT JOIN
насколько я в курсе писать незяяя... причём полюбому
так конструктор создает . выведет он конечно фигню т.к. связей у pic не прописано. но ежели это сделать с в графике - то всё прокатывает!!! а ежели в режиме sql - хана, даже если [ ,]. заменяешь!!!!


авторЯ может быть не в тему, но хочу уточнить: ты этот запрос пишешь в модуле или в конструкторе запросов?
пишу в конструкторе, использую в модуле в виде SQL строки.


авторя бы сделал бы следующим образом...
сохранил подзапросы [комитенты отгружено] и dd под этими же именами и из запроса бы их убрал, а потом уже в конструкторе пытался бы привентить енту табличку как надо...
ну а потом после успешного прикручивания вернул бы усё обратно...



я это и пытался сделать . pic использую уже чтоб заменить потом на (select....)
обычно так и получалось....


попытаюсь для пробы убрать длину...



авторпохоже проблема то проста:
полное произведение + OUTER (LEft/Right) JOIN (с одной из таблиц)
- оно "ни по какому" не поддерживается - ни в конструкторе/ ни в SQL, но сообщения, что интересно, разные.
повторюсь - создано конструктором - им же и произведен синтаксический разбор при переходе из грфики в скуэль...
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32547890
io
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор2)как по быстродействию GROUP BY и SELECT DISTINCT ...???
выберу быстодействие
DISTINCT наверняка будет быстрей, а GROUP BY используй:
1. во внешнем запросе
2. либо только там где используешь агр. функции типа Sum
На мой взгляд 2-й вариант будет быстрее т.к ты используешь JOIN к запросу который уже сгрупприрован, а значит количество записей в сгруппированном запросе будет меньше ----> отсюда следует что объединение будет происходить быстрее

автор... FROM pic, движение ...
Ты уверен что тебе действительно нужно декартово произведение???
Может тебе на [LEFT|RIGHT] JOIN переправить:
Код: plaintext
1.
... FROM pic  [LEFT|RIGHT] JOIN  движение ON PIC.ID=движение.ID ...
где ID - это поля по которым будет проходить соединение

Ну а если тебе нужно декартово произведение попробуй так:
Код: plaintext
... FROM pic, (SELECT * FROM движение RIGHT JOIN ...) as KakNibud
И конечно нужно будет ручками поработаь.

авторFROM pic, движение RIGHT JOIN
Правильно заметил Sfagnum, так это дело не пройдет.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32548093
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторповторюсь - создано конструктором - им же и произведен синтаксический разбор при переходе из грфики в скуэль...

кинь в конструктор 3 любые таблицы (попроще). 2 свяжи INNER, одну оставь несвязанной (или в WHERE).
- работает.
поменяй INNER на LEFT/RIGHT, прочитай ругательство, и больше не p@#di.
повтори это в SQL, прочитай (другое) ругательство еще раз, и принеси публике извинения.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32548334
io
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкинь в конструктор 3 любые таблицы (попроще). 2 свяжи INNER, одну оставь несвязанной (или в WHERE).
- работает.
поменяй INNER на LEFT/RIGHT, прочитай ругательство, и больше не p@#di.
Так вот я и не p@#du...
А то-что конструктор не может этого делать, это как раз и нужно исправлять, я же написал что нужно ручками поработать!

Вот что можно сделать с декартовым произведением:
Код: plaintext
1.
2.
SELECT * FROM Street_ZELENOG, 
     [select * from (allStreet LEFT JOIN Street_PAVLOVSK ON allStreet.STREET = Street_PAVLOVSK.STREET) 
     LEFT JOIN Street_PUSHKIN ON allStreet.STREET = Street_PUSHKIN.STREET]. AS a
В конструкторе отображаются как 2-е таблицы

Можно даже такое извращение с JOINами написать:
Код: plaintext
1.
2.
3.
SELECT * FROM 
     (select * from (allStreet LEFT JOIN Street_PAVLOVSK ON allStreet.STREET = Street_PAVLOVSK.STREET) 
     LEFT JOIN Street_PUSHKIN ON allStreet.STREET = Street_PUSHKIN.STREET) AS a 
     RIGHT JOIN Street_ZELENOG  ON a.allStreet.STREET = Street_ZELENOG.STREET;
В конструкторе отображаются как 2-е связанные таблицы

+ нормальный селект (конечно же)
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32548505
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 io
найди у себя (выше моего предыдущего поста) взятую мной (в нем, в посте) цитату,
не нашел?
а почему?
"потому что ее там нет"

теперь подумай, на чью реплику был мой ответ.


если не понял:
именно что на приведенную, а стало быть некому другому адресату.
Не стоит возбуждаться на реплики другому адресату.
Мы разными путями доказывам автору топика одно и то же.
Мыр, дружба, жувачка.
...
Рейтинг: 0 / 0
конструктор запросов .... помогите выжить
    #32548520
io
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
assa - NO PROBLEM
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / конструктор запросов .... помогите выжить
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]