powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хитрый запрос
16 сообщений из 16, страница 1 из 1
Хитрый запрос
    #32459350
anatan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть примерно такой запрос
select A.id as Q, sum(A.min) as QQ,(?) as QQQ from A,B
where A.id=B.id;
? - в это место надо добавить подзапрос, чтоб он делал следующее
из таблицы С суммировал столбец s по A.id, а A.id получается берется из внешнего запроса. получает например следующее
Q QQ QQQ
1 2 4
2 3 6
подскажите как здесь быть
...
Рейтинг: 0 / 0
Хитрый запрос
    #32459357
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так так и пиши
Код: plaintext
... as QQ,(select sum(s) from c where c.id=a.id) QQQ  ...

a еще лучше
Код: plaintext
1.
2.
3.
select A.id as Q, sum(A.min) as QQ,sum(c.s) as QQQ 
from A 
inner join B on a.id=b.id 
inner join c on a.id=c.id
...
Рейтинг: 0 / 0
Хитрый запрос
    #32459932
anatan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот такой запрос выдает не то, что надо

select A.id as Q, sum(A.min) as QQ,sum(c.s) as QQQ, sum(E.p) as QQQQ

from A

inner join B on a.id=b.id

inner join c on a.id=c.id

inner join E on a.f=E.f

Sum(E.p) - получается левое значение
...
Рейтинг: 0 / 0
Хитрый запрос
    #32459933
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А самому немножко подумать ?
Код: plaintext
1.
2.
3.
4.
select A.id as Q, sum(A.min) as QQ,sum(c.s) as QQQ 
from A 
inner join B on a.id=b.id 
inner join c on a.id=c.id
group by A.id  
...
Рейтинг: 0 / 0
Хитрый запрос
    #32459937
anatan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот конкретная часть запроса
SELECT forms![создание базы]!за_месяц AS PER, ("") AS INV, Абоненты.FIO AS F,
Абоненты.STREET++" "+Абоненты.DOM+IIf(Абоненты.KORP<>"",IIf(Абоненты.KORP>="а" And Абоненты.KORP<="я",""+Абоненты.KORP,"/"+Абоненты.KORP),"")+IIf(Абоненты.KVAR<>"",","+Абоненты.KVAR,"") AS ADDR,
Абоненты.PHONE AS PH,
Sum(Платежи.[SUMMA]) AS DEB,
Абоненты.TARIF AS PAY,
forms![создание базы]!bilprice AS BILPA, (Sum(IIf(Minute(Таблица_звонков.[Фактическая Длительность])=0,IIf(Second(Таблица_звонков.[Фактическая Длительность])<31,0,forms![создание базы]!bilprice),IIf(Second(Таблица_звонков.[Фактическая Длительность])>0,(Minute(Таблица_звонков.[Фактическая Длительность])+1)*forms![создание базы]!bilprice,Minute(Таблица_звонков.[Фактическая Длительность])*forms![создание базы]!bilprice)))+Абоненты.TARIF) AS SU,
forms![создание базы]!comment AS COMM
FROM
(Абоненты INNER JOIN Таблица_звонков ON Абоненты.[Идентификатор звонящего]=Таблица_звонков.[Идентификатор Звонящего])
INNER JOIN Платежи ON Абоненты.SCHET=Платежи.SCHET
WHERE
(Таблица_звонков.Дата Between forms![создание базы]!begin And forms![создание базы]!end)
GROUP BY Абоненты.[Идентификатор звонящего], Абоненты.FIO,
(Абоненты.STREET+" "+Абоненты.DOM+IIf(Абоненты.KORP<>"",IIf(Абоненты.KORP>="а" And Абоненты.KORP<="я",""+Абоненты.KORP,"/"+Абоненты.KORP),"")+IIf(Абоненты.KVAR<>"",","+Абоненты.KVAR,"")),
Абоненты.PHONE,
Абоненты.TARIF

Sum(Платежи.[SUMMA]) - считается неправильно
...
Рейтинг: 0 / 0
Хитрый запрос
    #32461069
Шогал
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скопируй базу данных и переведи на английский, а то в таком виде просто невозможно запросы читать, я уже не говорю о том чтобы составлять.

SHOGAL
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468379
anatan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SELECT A.ID_ABON, Sum(A.SUMMA) AS S, Sum(B.SUMM) AS SS
FROM
(D INNER JOIN A ON D.ID_ABON=A.ID_ABON)
INNER JOIN B ON D.ID_ABON=B.ID_ABON
WHERE A.KOD=1
GROUP BY A.ID_ABON;

Вторая сумма SS считается неправильно хз почему
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468382
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Если так считается - значит так и надо. Если автор ожидает другого, то надо понять чего и почему.
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468383
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
А именно:

1. На каких данных проводился расчет?
2. Какой результат был получен?
3. Какой результат ожидался?

Без этого вопрос вроде как и не задан.
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468386
anatan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ожидал, что просуммирует все значения в таблице B по ID_ABON
Данные такие
Таблица D
ID_ABON
1
2

Таблица A
ID_ABON SUMMA
1 20
1 23
2 20

Таблица В
ID_ABON SUMM
1 275
2 30
.. ..

Ожидал
1 115р 275р.

Получил
1 115р 555,7р
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468387
anatan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица A
ID_ABON SUMMA
1 60
1 55
2 20
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468391
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Отвечаю. Если убрать из запроса группировку, то будет видно, что с чем суммируется. В том числе видно, что из-за повторения значений в одной из таблиц некоторые записи других таблиц повторяются по несколько раз.
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468392
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Кстати, мне вернуло не 555,7, а 550, т.е. ровно 275*2. Думаю, что разница между 555,7 и 550 вызвана какой-то ошибкой на этапе упрощения примера для форума.
...
Рейтинг: 0 / 0
Хитрый запрос
    #32468396
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
select d.id_abon,nz(sum_a, 0 ) Sum_A,nz(sum_b, 0 ) Sum_B
from d 
left join
(select a.id,sum(summa ) as sum_a from A ) as t
on d.id_abon=t.id_abon
left join
(select b.id_abon,sum(summa) as sum_b from b) as tt
 and d.id_abon=tt.id_abon
...
Рейтинг: 0 / 0
Хитрый запрос
    #32469030
anatan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А что значат строки nz(sum_a,0) Sum_A,nz(sum_b,0) Sum_B - access выдает на них ошибку
...
Рейтинг: 0 / 0
Хитрый запрос
    #32469180
Фотография Владимир Саныч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
nz - функция, которая проверяет, не Null ли первый аргумент, и возвращает вместо Null'а то, что написано вторым аргументом. Возможно, придется вместо запятой поставить точку с запятой.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Хитрый запрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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