forum.bitel.ru http://forum.bitel.ru/ |
|
сравнить данные из 2-х запросов http://forum.bitel.ru/viewtopic.php?f=19&t=7990 |
Страница 1 из 1 |
Автор: | skyb [ 24 апр 2013, 06:40 ] |
Заголовок сообщения: | сравнить данные из 2-х запросов |
Код: 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 запрос, то все выводится правильно, а вот если вот так скриптом - то не верно |
Автор: | aardvark [ 06 май 2013, 13:12 ] |
Заголовок сообщения: | Re: сравнить данные из 2-х запросов |
скинуть результаты запросов в массивы, отсортировать, а потом сравнить пробовал? у меня есть подозрение, что всё дело в том как драйвер обрабатывает group by расширения mysql. |
Автор: | skyb [ 27 май 2013, 06:54 ] |
Заголовок сообщения: | Re: сравнить данные из 2-х запросов |
aardvark писал(а): скинуть результаты запросов в массивы, отсортировать, а потом сравнить пробовал? у меня есть подозрение, что всё дело в том как драйвер обрабатывает group by расширения mysql. неа, да вроде тот запрос, который навояли в конфе подходит, ещё поковыряю |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |