1
Создаем отчетную выборку
база voip
oper_ip - SITE - operators - RATES -DEST_CODES
запрос который поможет понять откуда начинать
select BILL_DATE,
s_o.SITENAME as site_o,
s_t.SITENAME as site_t,
o_t.OPERNAME oper_t,
o_o.OPERNAME oper_o,
CDR.DST_NUMBER_BILL,
r_t.PRICE as rate_t,
r_o.PRICE as rate_o,
d_t.CODE as CODE_t,
d_o.CODE as CODE_o
from CDR
inner join oper_ip ip_o on ip_o.IP_OP=CDR.SRC_IP
inner join oper_ip ip_t on ip_t.IP_OP=CDR.DST_IP
inner join SITE s_o ON s_o.ID=ip_o.OP_ID
inner join SITE s_t ON s_t.ID=ip_t.OP_ID
INNER JOIN operators o_t ON o_t.ID=s_t.OPER_ID
INNER JOIN operators o_o ON o_o.ID=s_o.OPER_ID
INNER JOIN RATES r_t on r_t.RATE_ID=s_t.rate_t
INNER JOIN RATES r_o on r_o.RATE_ID=s_o.rate_o
INNER JOIN DEST_CODE d_t on d_t.DEST_ID=r_t.CODE_ID
INNER JOIN DEST_CODE d_o on d_o.DEST_ID=r_o.CODE_ID
WHERE d_t.CODE IN (
SUBSTRING(CDR.DST_NUMBER_BILL,1,1),
SUBSTRING(CDR.DST_NUMBER_BILL,1,2),
SUBSTRING(CDR.DST_NUMBER_BILL,1,3),
SUBSTRING(CDR.DST_NUMBER_BILL,1,4),
SUBSTRING(CDR.DST_NUMBER_BILL,1,5),
SUBSTRING(CDR.DST_NUMBER_BILL,1,6),
SUBSTRING(CDR.DST_NUMBER_BILL,1,7),
SUBSTRING(CDR.DST_NUMBER_BILL,1,8),
SUBSTRING(CDR.DST_NUMBER_BILL,1,9)
)
and
d_o.CODE IN (
SUBSTRING(CDR.DST_NUMBER_BILL,1,1),
SUBSTRING(CDR.DST_NUMBER_BILL,1,2),
SUBSTRING(CDR.DST_NUMBER_BILL,1,3),
SUBSTRING(CDR.DST_NUMBER_BILL,1,4),
SUBSTRING(CDR.DST_NUMBER_BILL,1,5),
SUBSTRING(CDR.DST_NUMBER_BILL,1,6),
SUBSTRING(CDR.DST_NUMBER_BILL,1,7),
SUBSTRING(CDR.DST_NUMBER_BILL,1,8),
SUBSTRING(CDR.DST_NUMBER_BILL,1,9)
)
LIMIT 10
1) найти тарифы и рассчитать стоимость звонков в CDR
2) пересчитать данные из CDR в DAYSTAT и HOURSTAT
если данные там есть (на заданную дату) - они перезаписываются
если нет - добавляются