powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Написание функции
2 сообщений из 2, страница 1 из 1
Написание функции
    #38945594
Genkopura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необходимо реализовать функцию, которая бы считала бы по формуле: СУММА(Х*Y)+Z, где Х - это запрос, который выводит стоимость услуг по тарифу пользователя из таблицы t_tariff, Y - это запрос, который выводит число использования пользователем определенной услуги из таблицы t_units (это сумма полей vvalue таблицы t_units, т.е sum(c.vvalue), и сгруппированной по типу услуги(поле ntypeid)), Z - это запрос, который выводит случай использования единичной услуги пользователем (таблица t_cashactions).

Т.е нужно заносить данные в поле "nbalance" таблицы "t_numbers" Сумму(Х*Y)+Z :
Код: plsql
1.
UPDATE t_numbers SET nbalance =  СУММА(Х*Y)+Z WHERE id=res.nnumberid



Ниже приведена модель БД.

Первый запрос (Х) я реализовывал так:
Код: plsql
1.
2.
3.
4.
5.
SELECT n.vnumber, t.vname, noutfavoritecost, noutsystemcost, noutothercost, noutcityphonecost, noutinternationalcost, nsmscost, nmmscost, nwapcost FROM t_numbers n   -- t_numbers + t_tariff 
FULL JOIN t_contract c 
FULL JOIN t_tariff t ON c.ntariffid=t.id
ON c.id=n.ncontractid
GROUP BY n.vnumber, t.noutfavoritecost, t.vname, noutsystemcost, noutothercost, noutcityphonecost, noutinternationalcost, nsmscost, nmmscost, nwapcost



Второй запрос (таких запросов несколько штук, по каждой услуге):
Код: plsql
1.
2.
3.
4.
5.
6.
SELECT c.nnumberid, n.vnumber, t.vname, sum(c.vvalue) as summary FROM t_numbers n   -- t_numbers + t_units
LEFT JOIN t_units c 
LEFT JOIN t_unittype t ON c.ntypeid=t.id
ON c.nnumberid=n.id
WHERE vinout='OUTGOING' AND t.vname = 'WAP'
GROUP BY n.vnumber, t.vname, c.nnumberid



Третий запрос:
Код: plsql
1.
2.
3.
4.
5.
SELECT c.nnumberid, n.vnumber, t.vname, sum(c.nvalue) as summary FROM t_numbers n   -- t_numbers + t_cashactions 
FULL JOIN t_cashactions c 
FULL JOIN t_cashactiontype t ON c.ncashactiontypeid=t.id
ON c.nnumberid=n.id
GROUP BY n.vnumber, t.vname, c.nnumberid
...
Рейтинг: 0 / 0
Написание функции
    #38945596
Genkopura
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Genkopura,
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Написание функции
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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