powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите разобраться со строкой ИТОГО..
12 сообщений из 12, страница 1 из 1
Помогите разобраться со строкой ИТОГО..
    #38364159
Ruless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую уважаемые профессионалы!

Делаю примерно такой запрос, все работает, но никак не могу добавить итоговые строки для столбцов summa, prihod, terminal.
То есть внизу таблицы должна отображаться строка ИТОГО: где выводятся общие суммы для этих трех столбцов.

Всю голову сломал, никак не работает, прошу помогите разобраться.

Делаю примерно так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT dt, nomer, summa, prihod, terminal
    FROM(   SELECT  date dt1, oplata_date dt, 
	num nomer,
 	dogovor_itog summa,
   IF(   oplata_type='nal', oplata_summ,'') prihod,
   IF(   oplata_type='beznal', oplata_summ,'') terminal
          FROM
   oplata   LEFT JOIN
   cred_dog
    ON     oplata.dogovor_id=cred_dog.dogovor_id
    JOIN point  ON point.point_id=oplata.point_id
    JOIN dogovor  ON     dogovor.dogovor_id=oplata.dogovor_id

   UNION all

  SELECT  charge_date dt1, charge_date dt,
      '' nomer,
        '' summa,
        if( charge_summ<0 and charge_type='nal', -1*charge_summ,'') prihod,
        if( charge_summ<0 and charge_type<>'nal', -1*charge_summ,'') terminal
    
        FROM charge
 )
finans
ORDER BY  dt1
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38364244
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а возможности GROUP BY ... WITH ROLLUP вас не устраивают?
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38364259
Ruless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Возможно я что-то делаю не верно, но это вызывает ошибку..

Код: sql
1.
2.
ORDER BY  dt1
GROUP BY dt WITH ROLLUP
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38364286
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ruless,

а итоги надо подводить - по каким столбцам? как суммировать?
Просто нужен развернутый перечень и общий итог? тогда rollup не поможет, нужен обычный UNION ALL и сумма во втором селекте.
То есть что-то вроде
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT  
  date dt1, oplata_date dt, num nomer,
  dogovor_itog summa,
  IF(oplata_type='nal', oplata_summ,'') prihod,
  IF(oplata_type='beznal', oplata_summ,'') terminal
FROM oplata   
LEFT JOIN cred_dog ON  oplata.dogovor_id=cred_dog.dogovor_id
JOIN point ON point.point_id=oplata.point_id
JOIN dogovor  ON  dogovor.dogovor_id=oplata.dogovor_id

UNION ALL
SELECT  
  null dt1, null dt, null nomer,
  sum(dogovor_itog) summa,
  sum(IF(oplata_type='nal', oplata_summ,'')) prihod,
  sum(IF(oplata_type='beznal', oplata_summ,'')) terminal
FROM oplata   
LEFT JOIN cred_dog ON  oplata.dogovor_id=cred_dog.dogovor_id
JOIN point ON point.point_id=oplata.point_id
JOIN dogovor  ON  dogovor.dogovor_id=oplata.dogovor_id
order by dt1



хотя это вроде бы задача интерфейса а не SQL...
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38364323
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное, более оптимален такой вариант:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE TEMPORARY TABLE `for_itogs`
SELECT  
  date dt1, oplata_date dt, num nomer,
  dogovor_itog summa,
  IF(oplata_type='nal', oplata_summ,'') prihod,
  IF(oplata_type='beznal', oplata_summ,'') terminal
FROM oplata   
LEFT JOIN cred_dog ON  oplata.dogovor_id=cred_dog.dogovor_id
JOIN point ON point.point_id=oplata.point_id
JOIN dogovor  ON  dogovor.dogovor_id=oplata.dogovor_id;

select dt1, dt, nomer, summa, prihod, terminal from `for_itogs`
union all 
select null, null, null, sum(summa), sum(prihod), sum(terminal) from `for_itogs`
order by dt1;

drop temporary table `for_itogs`;
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38364617
Ruless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007,

Большое спасибо за помошь!
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38365600
Ruless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007наверное, более оптимален такой вариант

Код: sql
1.
2.
3.
 SELECT dt, nomer, naimen, summa, prihod, terminal, rashod, pr from for_itogs
 UNION all
select null, null, null, sum(summa), sum(prihod), sum(terminal), sum(rashod), null from for_itogs



Все отлично работает, только UNION отказывается, по отдельности все выводит замечательно, пробовал каждый запрос закрыть в скобки, результата не дало.
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38365633
Ruless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как я понимаю он не может 2 раза открыть for_itogs, если создать for_itogs2, все работает

Код: sql
1.
2.
3.
SELECT dt, nomer, naimen, summa, prihod, terminal, rashod, pr from for_itogs
UNION all
SELECT null, null, null, sum(summa),if (sum(prihod), sum(prihod)+$otchet->s,''), sum(terminal), sum(rashod), null from for_itogs2
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38365638
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хз как там блокировки не ставить на чтение... в MS SQL все на ура проходит...
Можно все же попробовать ROLLUP:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
SELECT * FROM (
SELECT dt, nomer, naimen, 
  sum(summa)summa, sum(prihod)prihod, sum(terminal)terminal, 
  sum(rashod)rashod, 
  pr 
FROM for_itogs
GROUP BY dt, nomer, naimen,pr WITH ROLLUP
)as r
WHERE dt IS NOT NULL AND nomer IS NOT NULL AND naimen IS NOT NULL AND pr IS NOT NULL
    OR dt IS NULL AND nomer IS NULL AND naimen IS NULL AND pr IS NULL
;

Не совсем то же самое, но итоги подобъет )
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38365643
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кстати, если ROLLUP устроит, то и временную табличку можно не создавать :)
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38365644
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Но проще всего итоги подбивать на клиенте, ИМХО
...
Рейтинг: 0 / 0
Помогите разобраться со строкой ИТОГО..
    #38365682
Ruless
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cygapb-007, хорошо, большое спасибо за помощь, всегда выручаете))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите разобраться со строкой ИТОГО..
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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