powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Просьба помочь в решении задачи
12 сообщений из 12, страница 1 из 1
Просьба помочь в решении задачи
    #39776145
Victor_DDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос следующий:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select a.name , bi.id_bill , sum(bi.price), p.sum  from bill as b
    inner join account as a    
    on b.id_account = a.id
    inner join bill_item as bi
    on b.id = bi.id_bill
    left join payment as p
    on b.id = p.bill_id
    WHERE b.month = {{Month}} and b.year = {{Year}}
group ???
order by a.name;



на выдаче у нас строки , где a.name повторяется несколько раз


Необходима группировка по a.name (каждая строка = отдельное имя a.name, корректная сумма в столбцах bi.price и p.sum)
НО
если мы ставим group by a.name , то p.sum не суммируются корректно (остается только одно значение )
а, если, добавляем sum(p.sum) - то в столбце p.sum получаются бешеные цифры

Помогите, пожалуйста - наставьте на путь истинный
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776147
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor_DDD,

очевидно, сначала требуется посчитать агрегаты - отдельно за начисления, отдельно за оплаты. после чего - делать соединения со счетами...
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776148
Victor_DDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,
не подскажите как это лучше сделать ?
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776151
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor_DDD,

через встроенные представления же (деривед тэйбл, селект-фром-селект)?
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776157
Victor_DDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Щукина Анна,
наверное так - пытаюсь разобраться с ним. Если есть возможность - подскажите, пожалуйста, как правильно сделать (не делал ранее select from select) ?
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776175
Фотография PaulYoung
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor_DDD,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
select a.name, bi.id_bill, t.price --, t.[sum] 
from bill as b
inner join account as a on b.id_account = a.id
OUTER APPLY (
    SELECT
        sum(bi.price) AS price
        --, sum(p.sum) AS [sum]
    FROM bill_item as bi
    left join payment as p on p.bill_id = bi.id_bill
    WHERE bi.id_bill = b.id
) AS t
WHERE b.month = {{Month}}
and b.year = {{Year}}
order by a.name;

?
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776194
Victor_DDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulYoung,

спасибо за участие.
не выходит (
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' t.[sum] from bill as b inner join account as a on b.id_account = a.id OUTER AP' at line 2

Модератор: Тема перенесена из форума "Microsoft SQL Server".
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776196
Фотография PaulYoung
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor_DDD,
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
select a.name, t.id_bill, t.price --, t.[sum] 
from bill as b
inner join account as a on b.id_account = a.id
inner join (
    SELECT
        bi.id_bill AS id,
        sum(bi.price) AS price
        --, sum(p.sum) AS [sum]
    FROM bill_item as bi
    left join payment as p on p.bill_id = bi.id_bill
    GROUP BY bi.id_bill
) AS t ON t.id = b.id
WHERE b.month = {{Month}}
and b.year = {{Year}}
order by a.name;

?
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776197
Victor_DDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulYoung,
да, также попробовал менять на inner join ) (думал, не поддерживается outer apply
но все равно - ошибка
MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' t.[sum] from bill as b inner join account as a on b.id_account = a.id inner jo' at line 2
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776198
Фотография PaulYoung
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor_DDD, идея, думаю, понятна, подкрутите для вашей БД
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776201
Victor_DDD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PaulYoung,

да, попробую, спасибо большое!
...
Рейтинг: 0 / 0
Просьба помочь в решении задачи
    #39776203
Фотография PaulYoung
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Victor_DDD,

там неверно указан символ комментария (--), попробуйте так: /*, t.[sum] */ ну или посмотрите, как это должно быть в MySQL
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Просьба помочь в решении задачи
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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