BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 20 июн 2025, 13:59

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: сравнить данные из 2-х запросов
СообщениеДобавлено: 24 апр 2013, 06:40 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
Код:
package ru.skyb.scripts.global.report;

import ru.bitel.bgbilling.kernel.script.server.dev.GlobalScriptBase;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.sql.ConnectionSet;

import java.math.BigDecimal;
import java.sql.*;
import java.util.*;
import java.util.Date;

import bitel.billing.common.TimeUtils;
import bitel.billing.server.contract.bean.*;

public class HouseDiff
   extends GlobalScriptBase
{
   @Override
   public void execute( Setup setup1, ConnectionSet connectionSet2 )
      throws Exception
   {

      Connection con = connectionSet2.getConnection();   
      /*Calendar calendar = new GregorianCalendar();
      GregorianCalendar nowDate = (GregorianCalendar) calendar.clone();//клонируем дату для дальнейшей работы
      nowDate.get(Calendar.DATE);
      GregorianCalendar sqlDate = (GregorianCalendar) calendar.clone();
      Date dateSql = TimeUtils.convertCalendarToSqlDate(sqlDate);
      Date dateNow = TimeUtils.convertCalendarToDate(nowDate);//переводим дату в тип Date с типа Calendar*/
      String FirstMonth = "SELECT count(c.id),cpt2.address,sum(cb.summa3) FROM contract AS c " +
                      "LEFT JOIN contract_parameter_type_2 AS cpt2 ON c.id=cpt2.cid " +
                      "LEFT JOIN contract_balance AS cb on c.id=cb.cid " +
                      "WHERE cpt2.pid=1 AND gr&(1<<5)>0 AND cb.yy=2013 AND cb.mm=2 AND cb.summa3 > 0 " +
                      "GROUP BY cpt2.hid ORDER BY count(c.id)";
      String SecondMonth = "SELECT count(c.id),cpt2.address,sum(cb.summa3) FROM contract AS c " +
                      "LEFT JOIN contract_parameter_type_2 AS cpt2 ON c.id=cpt2.cid " +
                      "LEFT JOIN contract_balance AS cb on c.id=cb.cid " +
                      "WHERE cpt2.pid=1 AND gr&(1<<5)>0 AND cb.yy=2013 AND cb.mm=4 AND cb.summa3 > 0 " +
                      "GROUP BY cpt2.hid ORDER BY count(c.id)";
      //print("QueryIdAddress=> " + FirstMonth);
      PreparedStatement FirstPs = con.prepareStatement( FirstMonth );
      ResultSet FirstRs = FirstPs.executeQuery();
      int FirstCid;
      int SecondCid;
      String SecondAddress;
      String FirstAddress;
      BigDecimal SecondSumma3;
      BigDecimal FirstSumma3;
      int i = 0;
      //int j = 0;
      int DiffCid;
      BigDecimal DiffSumma3;
      
      //print("SecondMonth => " + SecondMonth);
      PreparedStatement SecondPs = con.prepareStatement( SecondMonth );
      ResultSet SecondRs = SecondPs.executeQuery();
      
       while ( FirstRs.next() && SecondRs.next())
          {             
            //print ("address => " + address + " " + cid + " summa3=> " + summa3);
                  i++;
                  //j++;
                  FirstCid = FirstRs.getInt( 1 );
                  FirstAddress = FirstRs.getString( 2 );
                  FirstSumma3 = FirstRs.getBigDecimal( 3 );
                  
                   SecondCid = SecondRs.getInt( 1 );
                   SecondAddress = SecondRs.getString( 2 );
                   SecondSumma3 = SecondRs.getBigDecimal( 3 );
                  
                   //print ("FirstCid => " + FirstCid + " FirstAddress => " + FirstAddress + " FirstSumma3 => " + FirstSumma3 + "\n" +
                   //" SecondCid => " + SecondCid + " SecondAddress => " + SecondAddress + " SecondSumma3 => " + SecondSumma3 );
                  DiffCid = SecondCid - FirstCid;
                  DiffSumma3 = SecondSumma3.subtract(FirstSumma3);
                  print ("Адресс  " + FirstAddress + "  абоненты " + DiffCid + " Наработка " +  DiffSumma3 + " абоненты " + FirstCid + " Наработка " +
                  FirstSumma3 + " абоненты " + SecondCid + " Наработка " + SecondSumma3);
                  //print("кол-во 1 " +i + "\n" + "кол-во 2 " +j + "cid " +FirstCid);
             }
       print("кол-во " +i );
   }
}

Вот что сделать нужно, но при первой же выборке FirstCid = FirstRs.getInt( 1 ); уже дает не те данные,, когда делаю просто sql запрос, то все выводится правильно, а вот если вот так скриптом - то не верно

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сравнить данные из 2-х запросов
СообщениеДобавлено: 06 май 2013, 13:12 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
скинуть результаты запросов в массивы, отсортировать, а потом сравнить пробовал?
у меня есть подозрение, что всё дело в том как драйвер обрабатывает group by расширения mysql.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: сравнить данные из 2-х запросов
СообщениеДобавлено: 27 май 2013, 06:54 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
aardvark писал(а):
скинуть результаты запросов в массивы, отсортировать, а потом сравнить пробовал?
у меня есть подозрение, что всё дело в том как драйвер обрабатывает group by расширения mysql.

неа, да вроде тот запрос, который навояли в конфе подходит, ещё поковыряю

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
POWERED_BY
Русская поддержка phpBB
[ Time : 0.032s | 21 Queries | GZIP : On ]