powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / работа с подчиненным запросом
43 сообщений из 43, показаны все 2 страниц
работа с подчиненным запросом
    #32277083
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос на выборку. Работает с 2мя столбцами - цена и количество. По введенной цене суммирует общее количество. Т.е. если цена 150 встречается в таблице 5 раз с разным количеством продаж, то запрос суммирует все количества. Так как запрос подчиненный, то нужно как-то прописать условие, что в случае "если такая цена в таблице не найдена - количество равно нулю".
Как это сделать, не подскажете? А то пока цена есть - все работает нормально, а как-только цены нет - общий запрос перестает работать.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277087
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Текст запроса в студию. (С) не помню кто.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277108
Фотография Лифчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поначалу это говорил Влад Листев, но его убили. Теперь бессменный Леонид Якубович, поле чудес, страна дураков
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277118
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да там и текста-то особого нет, к тому же, если честно, я не знаю, как выцепить текст, поэтому:
выглядит это так (21 кб)
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277135
Фотография Varan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Открой запрос в режиме конструктора и выбери в левом верхнем углу "Режим SQL" . Появится текст запроса, копируй его ctrl+C и т.д.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277139
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT plus.PRICE, Sum(plus.QUANTY) AS [Sum-QUANTY]
FROM plus
GROUP BY plus.PRICE
HAVING (((plus.PRICE)=[Forms]![просмотр склада]![ПолеСоСписком2]));
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277168
RVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй так:
Код: plaintext
1.
2.
3.
SELECT plus.PRICE, Sum(NZ(plus.QUANTY)) AS [Sum-QUANTY] 
FROM plus 
GROUP BY plus.PRICE 
HAVING (((plus.PRICE)=[Forms]![просмотр склада]![ПолеСоСписком2]));
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277173
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше
SELECT plus.PRICE, Sum(plus.QUANTY) AS [Sum-QUANTY]
FROM plus
WHERE (((plus.PRICE)=[Forms]![просмотр склада]![ПолеСоСписком2]))
GROUP BY plus.PRICE
;
(делается повторным выводом поля в конструкторе, выбором флажка "условие" вместо группировки и все)
_______
- т.е. Если с plus.PRICE не нашлось записей, то где-то надо получить 0?

если обязательно вывести и такую запись - то надо пошаманить с источником (сворачиваемых) записей (например пополнив его левым джойном с полным справочником возможных цен). Но, наверное это не нужно. Как стоит задача более общО?
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277178
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 RVI
не-а, не работает :(
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277187
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможно, сейчас прийдут знатоки SQL и предложат лучший вариант, но можно так:

SELECT TOP 1 PRICE, [Sum-QUANTY] FROM
[
SELECT 1 as qKey, plus.PRICE, Sum(plus.QUANTY) AS [Sum-QUANTY] FROM plus
GROUP BY plus.PRICE
HAVING (((plus.PRICE)=[Forms]![просмотр склада]![ПолеСоСписком2]))

UNION SELECT 2, [Forms]![просмотр склада]![ПолеСоСписком2], 0 FROM plus

ORDER BY qKey
]. As MuQuery;
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277188
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Предлагаю так:

SELECT [Forms]![просмотр склада]![ПолеСоСписком2] AS PRICE, Sum(plus.QUANTY) AS [Sum-QUANTY]
FROM [select PRICE, QUANTY from plus union select -1, 0 from OneLine]. AS plus
WHERE (((plus.PRICE)=[Forms]![просмотр склада]![ПолеСоСписком2])) OR (((plus.QUANTY)=0));

Правда, при этом пришлось завести таблицу OneLine с одной записью (названия полей и их значения не важны).

P.S. Это не Листьев и не Якубович, а на нашем форуме кто-то предлагал именно текст запроса в студию.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277217
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владимир Саныч, тоже не работает :(
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277224
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Владимир Саныч
пишет
"Ядро базы данных Microsoft Jet не может найти входную таблицу или запрос 'select PRICE, QUANTY from plus union select -1, 0 from OneLine'. Проверьте существование таблицы или запроса и правильность имени.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277227
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В твоем случае по-моему надо поправить Where, иначе, если цена будет найдена, вернется 2 записи. Или вместо "-1" написать Forms!...ПолеСоСписком
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277231
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой.
Предыдущий пост был ВС адресован.
+ к нему. И добавить Group By ...
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277239
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>пишет
"Ядро базы данных Microsoft Jet не может найти входную таблицу или запрос 'select PRICE, QUANTY from plus union select -1, 0 from OneLine'. Проверьте существование таблицы или запроса и правильность имени

А само
select PRICE, QUANTY from plus union select -1, 0 from OneLine
работает?
(если вставить в режим SQL в пустой бланк запроса?)

Если нет - Вы невнимательно читали ВС (17:59) - надо вставить таблицу "OneLine".
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277241
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 assa
само - работает
я догадалась, что нужно создать таблицу OneLine
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277249
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне кажется, я не совсем точно объяснила, ЧТО мне нужно.
Попробую еще раз.
У меня есть таблица "plus". В ней есть столбцы PRICE и QUANTY соответственно.
Мне нужно, чтобы запрос, получив из формы цифру, к примеру 150, нашел все вхождения этой самой 150 в столбце PRICE. И просуммировал все QUANTY, которые ей соответствуют. Это мой запрос и так делает.
Загвоздка в том, что пользователь может ввести цифру, которой не будет в столбце PRICE, например - 20. И тогда нужно, чтобы результатом запроса была табличка:

PRICE QUANTY
20 0

Потому что это подчиненный запрос. Их всего три, совершенно однотипных.
А окончательный запрос собирает результаты с этих запросов и считает общее количество окончательно. Вот так:

SELECT [otchet_sum].PRICE AS Выражение1, ([sklad_sum].[Sum-QUANTY]-[plus_sum].[Sum-QUANTY]-[otchet_sum].[Sum-QUANTY]) AS QUANTITY
FROM otchet_sum, plus_sum, sklad_sum
GROUP BY [otchet_sum].PRICE, ([sklad_sum].[Sum-QUANTY]-[plus_sum].[Sum-QUANTY]-[otchet_sum].[Sum-QUANTY]);

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

...Ну, тогда сохраните "само" (например как plusQ) и вместо скобок и точек киньте это "само" в конструктор вместо plus и повторите Ваш изначальный запрос но уже с plusQ.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277255
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 assa

сделала, ошибка не появляется, но нужный результат не дает :(
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277258
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 assa
и, кстати, перестал считать даже то, что считал :(
т.е. если вхождение цены в таблице есть
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277262
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
select  nz(a.price,[Forms]![просмотр склада]![ПолеСоСписком2]) as price,
nz(qty, 0 )  as Qty
from plus as t
left join
(SELECT price,Sum(Qty) AS Qty
FROM plus
WHERE plus.Price)=[Forms]![просмотр склада]![ПолеСоСписком2]
GROUP BY plus.Price) as a
on t.price=a.price
where a.price is null
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277265
marina_spb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 (c)VIG
"ошибка синтаксиса в предложении FROM"
:(
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277286
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2VIG:
[ ].
!!!

2 marina_spb
сделайте по простому. Сохраните вложенный. (то что в [].) Стройте на нем обычный. Смотрите за тем, что у Вас получается на каждом этапе.
Вложенный должен отличаться +1 строкой с 0 в QUANTY от
select PRICE, QUANTY from plus
, далее смотрите, как он у вас группируется -просто все делайте в конструкторе, как привыкли, и не будет проблем. ( Визуально я не вижу ошибок у ВС. казалось бы достаточно просто выделить и вставить. )
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277289
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Визуально я не вижу ошибок у ВС
Как я ему писал выше, недостает Group By и запрос вернет 2 записи если найдет цену в таблице...
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277290
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а по поводу постановки задачи - не понятно, зачем вам запросы, возвращающие 1 значение еще и группировать. Вам вполне подойдет обычный запрос Select TOP 1 без группировки но с ф-ями DSum(выражение, набор[, условие]) с тем же Where в условии отбора.

А Точнее - вам просто нужно 3 вычисляемых поля обновлять (Recalc) после вставки заданных значений (.AfterUpdate). И все. А в источниках этих полей ставить что-то типа

DSum("QUANTY", "plus", "PRICE)=" & me![ПолеСоСписком2])
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277292
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2асса
Кстати, вот это: "[ ]." к VIG'у отношения не имеет. Там скобка лишняя:
WHERE plus.Price)
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277294
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2GEO - правда ваша. Недоглядел. TOP 1-? (с нужным порядком выборки) (т.к. 2 marina_spb 2-е записи не нужны)
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277295
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ваша
"твоя".

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

:]
(бе-бе-бе)
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277301
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так правильно
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select top  1  nz(a.price,[Forms]![просмотр склада]![ПолеСоСписком2]) as price,
nz ( a.qty, 0 )  as Qty
from plus as t
left  join
(SELECT price,Sum(plus.Qty) AS Qty
FROM plus
WHERE plus.Price=[Forms]![просмотр склада]![ПолеСоСписком2]
GROUP BY plus.Price) as a
on t.price=a.price
group by a.price,a.qty
order by a.qty desc

2 Assa
У меня в ХР прекрасно работает и с круглыми скобками.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277309
assa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну, дык. А вот 97 -ниии.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277359
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Господа, добрый вечер. Я съездил в гости на празднование Нового года и вернулся. Гляжу - а тут мой запрос вовсю комментируется. То он работает, то он не работает. На всякий случай сообщаю:

1. У меня он работает. Я копировал в форум текст работающего запроса. И дает он то, что нужно.

2. Аксесс у меня 97.

3. Правда, мне было лениво создавать форму, поэтому везде, где у меня написано Forms!тырыпыры, на самом деле в работающем запросе стояла константа 10. Возможно, дело в этом, но странно мне.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277364
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2BC
18:27 и 18:21 - это тебе, за остальное прошу прощения.

Блин, дарроги... :((
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277365
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2BC
18:27 и 18:21 - это тебе, за остальное прошу прощения.

Блин, дарроги... :((
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277366
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2BC
18:27 и 18:21 - это тебе, за остальное прошу прощения.

Блин, дарроги... :((
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277368
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
На 18:27 - проверено, он возвращает не две записи, а одну.

На 18:21 - такого поста не найдено, возможно, он был настолько нецензурен, что его почикал админ. :^)

Прощения просить не надо, прощения у нас просят на Йом Кипур (у всех на всякий случай), а это только через неделю.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277405
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для забавы попроверял то, что тут совместными усилиями насоветовали:
-------
Geo
- оригинал не работает совсем.
В 97-м работает такой вариант:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT TOP  1  MuQuery.PRICE, QUAN AS Выражение1
FROM [
SELECT  1  as qKey, plus.PRICE, Sum(plus.QUANTY) AS QUAN FROM plus
GROUP BY plus.PRICE 
HAVING (((plus.PRICE)=Forms!просмотр!ПолеСоСписком2))

UNION SELECT  2 , Forms!просмотр!ПолеСоСписком2,  0  FROM plus

ORDER BY qKey
]. AS MuQuery;

, т.е. без квадратных скобок внутри первых. Т.е. форму "просмотр склада" придется переименовать в "просмотр" или что-то без пробелов.

В ХР надо пару "[ ]." заменить на "( )"
-------
BC

Оригинал работает и в 97-м, и в ХР.
-------
RVI, assa

Оригинал не работает при отсутствии цены в таблице.
-------
VIG

Оригинал (последний) работает в XP после замены внутреннего Qty на местное QUANTY.
В 97-м кроме того внешние () вложенного селекта надо заменять на "[].", внутренние "[]" убирать.

====
Вот.

Эх, дарроги...
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277406
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отсюда у меня вопрос: почему акцес (в частности 02-й) так странно работает с [ ]. - то разрешает, то нет?
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32277407
Фотография Geo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отсюда у меня вопрос: почему акцес (в частности 02-й) так странно работает с [ ]. - то разрешает, то нет?

=============
И вообще.

2 ВС, VIG

С Новым Годом!!! :))
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32387283
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторSELECT [Forms]![просмотр склада]![ПолеСоСписком2] AS PRICE, Sum(plus.QUANTY) AS [Sum-QUANTY]
FROM [select PRICE, QUANTY from plus union select -1, 0 from OneLine]. AS plus
WHERE (((plus.PRICE)=[Forms]![просмотр склада]![ПолеСоСписком2])) OR (((plus.QUANTY)=0));

подкрутка:

SELECT [Forms]![просмотр склада]![ПолеСоСписком2] AS PRICE,
plus.[Sum-QUANTY]
FROM [select PRICE, Sum(plus.QUANTY) AS [Sum-QUANTY] from plus
WHERE ((plus.PRICE)=[Forms]![просмотр склада]![ПолеСоСписком2])
UNION
select -1, 0 from OneLine]. AS plus;

Замечание1: OneLine должна не просто существовать, а иметь записи - хотя бы одну.
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32387284
Фотография Victosha
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
опять соврамши - суммирование, конечно, надо оставить где и былО.

(; - видать - неймется (;
...
Рейтинг: 0 / 0
работа с подчиненным запросом
    #32387533
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Про OneLine прокомментировано в посте от 26 сен 03, 17:59. :^)
...
Рейтинг: 0 / 0
43 сообщений из 43, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / работа с подчиненным запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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