forum.bitel.ru
http://forum.bitel.ru/

Создание отчета из отчета
http://forum.bitel.ru/viewtopic.php?f=12&t=3484
Страница 1 из 1

Автор:  skyb [ 26 янв 2010, 11:01 ]
Заголовок сообщения:  Создание отчета из отчета

А не кто не подскажет что использовать и что придумать можно чтоб получился из одного отчета другой. Тоесть по сформированным данным одного отчета получить уже другой

Автор:  stark [ 26 янв 2010, 12:26 ]
Заголовок сообщения:  Re: Создание отчета из отчета

не совсем понятно что нужно получить и зачем

Автор:  skyb [ 26 янв 2010, 12:44 ]
Заголовок сообщения:  Re: Создание отчета из отчета

stark писал(а):
не совсем понятно что нужно получить и зачем

Нужно на основе отчета №1 допустим они вывели какие-то данный, потом по этим данным и плюс ещё какието данные взятые из бд и в сумме получается отчет №2

Автор:  stark [ 26 янв 2010, 13:55 ]
Заголовок сообщения:  Re: Создание отчета из отчета

нет такой возможности ..нужно сделать отчет n2, который выводит все что нужно

Автор:  skyb [ 26 янв 2010, 14:00 ]
Заголовок сообщения:  Re: Создание отчета из отчета

stark писал(а):
нет такой возможности ..нужно сделать отчет n2, который выводит все что нужно

ну а допустим если после генерации отчета записать это в базуданных, а потом из нее брать?
или есть такая возможность-сделать запрос, потом те данные которые в запросе сложить со вторым запросом?
например:
запрос1+запрос2
и только потом сделать уже вывод?

Автор:  stark [ 26 янв 2010, 15:22 ]
Заголовок сообщения:  Re: Создание отчета из отчета

а смысл ? проще сделать еще один

Автор:  skyb [ 26 янв 2010, 15:25 ]
Заголовок сообщения:  Re: Создание отчета из отчета

stark писал(а):
а смысл ? проще сделать еще один

Просто тут дело в том что данные именно беруться из того что было сформировано в прошлом отчете.
Мож что подругому подскажете.

Автор:  leon [ 03 фев 2010, 21:12 ]
Заголовок сообщения:  Re: Создание отчета из отчета

skyb писал(а):
stark писал(а):
а смысл ? проще сделать еще один

Просто тут дело в том что данные именно беруться из того что было сформировано в прошлом отчете.
Мож что подругому подскажете.


Это вложенные отчеты.
Например, наработка по тарифам (основной модуль):
Первый отчет - список тарифов с наработкой далее можно провалиться
в детализацию по выбранному тарифу - список договоров с их наработкой.
Из второго можно вернуться в первый.

Автор:  skyb [ 04 фев 2010, 10:21 ]
Заголовок сообщения:  Re: Создание отчета из отчета

leon писал(а):
skyb писал(а):
stark писал(а):
а смысл ? проще сделать еще один

Просто тут дело в том что данные именно беруться из того что было сформировано в прошлом отчете.
Мож что подругому подскажете.


Это вложенные отчеты.
Например, наработка по тарифам (основной модуль):
Первый отчет - список тарифов с наработкой далее можно провалиться
в детализацию по выбранному тарифу - список договоров с их наработкой.
Из второго можно вернуться в первый.

Точно! что то я забыл про это:-)
мне нужно сделать следущее расчет коэффициэнта мультиплексирования - прикрепленный фаил. Так ща сделаю отчет по первой табличке, посмотрим где застопарюсь дальше.

Автор:  Akhmat [ 04 фев 2010, 14:25 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Интересный отчет. Если получится поделитесь наработкой. Могу поучаствовать, помогу чем смогу

Автор:  skyb [ 04 фев 2010, 14:46 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Akhmat писал(а):
Интересный отчет. Если получится поделитесь наработкой. Могу поучаствовать, помогу чем смогу

О хорошо! уже не один. Отчет действительно интересен и помоемому важен, для экономии канала. Постараюсь сегодня(завтра)сделать отчет по первой таблице. Просто сегодня день загружен был. И у меня уже 18.00 вобщем посмотрю и завтра напишу что получилось

Автор:  skyb [ 05 фев 2010, 14:17 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Чета вояю вояю а даже первого отчета не получается...буду дальше курить документацию. Не кто не пробовал?

Автор:  Akhmat [ 05 фев 2010, 15:24 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Код:
SELECT DISTINCT ttl.tpid, (SELECT title FROM tariff_plan WHERE id=ttl.tpid) AS title,
(SELECT SUM(amount)/1073741824.0 FROM session_detail_1_201001 WHERE sid=4 AND session_id IN (
   SELECT id FROM log_session_1_201001 WHERE lid IN (
       SELECT id FROM user_login_1 WHERE cid IN(
          SELECT cid FROM contract_tariff WHERE tpid=ttl.tpid AND (date1 IS NULL OR date1<='2010-01-15') AND (date2 IS NULL or date2 > '2009-10-01')
         )
      )
   )
) AS trafik
FROM tariff_tree_link ttl LEFT JOIN module_tariff_tree mtt ON ttl.tree_id=mtt.tree_id
WHERE mtt.mid=1 HAVING NOT title IS NULL

Запрос который выдает инфу по месеячному трафику по тарифным планам с диалап. НО в нем считается что если тарифный план действовал в выбранном месяце, то он действовал весь месяц, что может быть не совсем верно.
mid=1 модуль диалап
sid=4 услуга внешний вх. трафик
никак не допру как переделать этот запрос, так чтобы в выборку сессий добавить ещё ограничение по действию тарифного плана, видать его перестроить надо. Запрос очень тяжелый, выполняется у меня порядка 15-20 минут. Написал перл скрипт, в котором запросы разделены, и который учитывает также и период действия тарифных планов, но он выполняется невероятно долго.

Автор:  skyb [ 05 фев 2010, 15:37 ]
Заголовок сообщения:  Re: Создание отчета из отчета

На выходных покурю с джасперрепорт отчетами, мож запихаю его не запросом а в биллинг. Знакомится с отчетами только начал. Поэтому может неполучится.

Автор:  skyb [ 09 фев 2010, 14:52 ]
Заголовок сообщения:  Re: Создание отчета из отчета

а что я делаю нетак?
немного изменил запрос
Код:
SELECT DISTINCT ttl.tpid, (SELECT title FROM tariff_plan WHERE id=ttl.tpid) AS title,
(SELECT SUM(amount)/1073741824.0 FROM session_detail_1_201001 WHERE sid=2 AND dtime=2010-01-01 AND session_id IN (
   SELECT id FROM log_session_1_201001 WHERE lid IN (
       SELECT id FROM user_login_1 WHERE cid IN(
          SELECT cid FROM contract_tariff WHERE tpid=ttl.tpid AND (date1 IS NULL OR date1<='2010-01-15') AND (date2 IS NULL or date2 > '2009-10-01')
         )
      )
   )
) AS trafik
FROM tariff_tree_link ttl LEFT JOIN module_tariff_tree mtt ON ttl.tree_id=mtt.tree_id
WHERE mtt.mid=1 HAVING NOT title IS NULL

Он не выдает цифр вообще
если добавить чтоб по времени парсил типа dtime=2010-01-01 00:00:00 то он вообще ошибку выдает

Автор:  Akhmat [ 09 фев 2010, 15:09 ]
Заголовок сообщения:  Re: Создание отчета из отчета

AND dtime=2010-01-01
в ковычки. лучше
AND dtime BETWEEN '2010-01-01' AND '2010-01-02'
тогда. Тут мне подсказал коллега с форума, что ещё лучше будет если убрать в запросе выборку из log_session т.е. в session_detail уже есть информация по договору, и можно переходить сразу к contract_tariff.

upd
Подправлю запрос с учетом этого немного позже.

Автор:  skyb [ 09 фев 2010, 15:19 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Akhmat писал(а):
AND dtime=2010-01-01
в ковычки. лучше
AND dtime BETWEEN '2010-01-01' AND '2010-01-02'
тогда. Тут мне подсказал коллега с форума, что ещё лучше будет если убрать в запросе выборку из log_session т.е. в session_detail уже есть информация по договору, и можно переходить сразу к contract_tariff

по поводу ковычек помогло и со временем работает.
по поводу
Akhmat писал(а):
Тут мне подсказал коллега с форума, что ещё лучше будет если убрать в запросе выборку из log_session т.е. в session_detail уже есть информация по договору, и можно переходить сразу к contract_tariff

я подумывал над этим, только когда его удаляешь он ошибку выдает. Просто боюсь ченить накосячить. Что делаю нетак?

Автор:  skyb [ 09 фев 2010, 16:06 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Код:
SELECT DISTINCT ttl.tpid, (SELECT title FROM tariff_plan WHERE id=ttl.tpid) AS title,
(SELECT SUM(amount)/28800 FROM session_detail_1_201001 WHERE sid=2 AND dtime BETWEEN '2010-01-01 15:00:00' AND '2010-01-01 16:00:00' AND session_id IN (
   SELECT id FROM log_session_1_201001 WHERE lid IN (
       SELECT id FROM user_login_1 WHERE cid IN(
          SELECT cid FROM contract_tariff WHERE tpid=ttl.tpid AND (date1 IS NULL OR date1<='2010-01-15') AND (date2 IS NULL or date2 > '2009-10-01')
         )
      )
   )
) AS trafik
FROM tariff_tree_link ttl LEFT JOIN module_tariff_tree mtt ON ttl.tree_id=mtt.tree_id
WHERE mtt.mid=1 HAVING NOT title IS NULL

собственно говоря таблица номер 2 только непонятно как зделать чтоб он показывал не за определенный час в определенный день а за определенный час в промежуток - за месяц

Автор:  Akhmat [ 09 фев 2010, 23:44 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Код:
SELECT DISTINCT ttl.tpid, (SELECT title FROM tariff_plan WHERE id=ttl.tpid) AS title,
(SELECT SUM(amount)/1073741824.0 FROM session_detail_1_201001 WHERE sid=4 AND cid IN (
          SELECT cid FROM contract_tariff WHERE tpid=ttl.tpid AND (date1 IS NULL OR date1<='2010-01-15') AND (date2 IS NULL or date2 > '2009-10-01')
   )
) AS trafik
FROM tariff_tree_link ttl LEFT JOIN module_tariff_tree mtt ON ttl.tree_id=mtt.tree_id
WHERE mtt.mid=1 HAVING NOT title IS NULL

Так работает в два раза быстрее, а результат тот же (так зачем же платить больше). Но этот запрос не выбирает строго трафик по выбранному тарифу за месяц. Предполагается, что если у клиента тарифный план действовал в выбранном месяце, то он работал по нему весь месяц.

В вашем случае одним запросом не реализовать думаю. Писать скрипт и делать выборку разве что. Можно на основе этого запроса.

Автор:  skyb [ 10 фев 2010, 10:46 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Расхождения получатся не сильно большие, и они будут вполне приемлемы для такого отчета.щас мучаюсь над третим отчетом

Автор:  skyb [ 10 фев 2010, 13:31 ]
Заголовок сообщения:  Re: Создание отчета из отчета

в попытках добить третью таблицу дошел до такого вот запроса
Код:
SELECT DISTINCT (select COUNT(id) from contract) AS contract, (SELECT title FROM tariff_plan WHERE id=ttl.tpid) AS title,
(SELECT SUM(amount)/1073741824.0 FROM session_detail_1_201001 WHERE sid=2 AND cid IN (
          SELECT cid FROM contract_tariff WHERE tpid=ttl.tpid AND (date1 IS NULL OR date1<='2010-01-15') AND (date2 IS NULL or date2 > '2009-10-01')
   )
) AS trafik
FROM tariff_tree_link ttl LEFT JOIN module_tariff_tree mtt ON ttl.tree_id=mtt.tree_id
WHERE mtt.mid=1 HAVING NOT title IS NULL

как преобразовать запрос чтобы вместо полного подсчета количество договоров он считал нужные для нужных тарифных планов
допустим для такогото 20 договоров, для токого то 40

Автор:  skyb [ 15 фев 2010, 13:45 ]
Заголовок сообщения:  Re: Создание отчета из отчета

неподскажете почему при таком запросе записи дублируются?
Код:
select DISTINCT tariff_plan.title, (select DISTINCT count(tpid) from contract_tariff where contract_tariff.tpid=tariff_plan.id)as contact, (select sum(amount) from session_detail_1_201002 where contract_tariff.cid=session_detail_1_201002.cid and sid=2)as trafic from session_detail_1_201002, contract_tariff, tariff_plan where contract_tariff.cid=session_detail_1_201002.cid and contract_tariff.tpid=tariff_plan.id;

такое ощущение что он просто выводит трафик за какждую сессию. как убрать дубляцию?

Автор:  Akhmat [ 15 фев 2010, 16:00 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Не понятный запрос. подзапрос
Код:
(select DISTINCT count(tpid) from contract_tariff where contract_tariff.tpid=tariff_plan.id)as contact

всегда будет давать один и тот же результат, потому что он не связан условиями с основым запросом.
выборка два раза из session_detail_1_201002 тоже не понятна

Автор:  skyb [ 19 фев 2010, 10:57 ]
Заголовок сообщения:  Re: Создание отчета из отчета

Не могу разобраться с Ireports. Не может ли ктонибудь рассказать как это запихивается в отчеты. напримере одного из этих отчетов

Автор:  skyb [ 27 фев 2010, 15:24 ]
Заголовок сообщения:  Re: Создание отчета из отчета

третья таблица, файлы надо положить в папку с сервером /reports находится они будут в модуле подключения по dialup
Мож всетаки ктонибудь поможет? хотябы с mysql запросами.
Да только забыл добать в sql запросе чтоб выводил в мб сейчас он выводит в байтах(не выводит, а пользователи скачавшие больше xx мб - там байт)

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/