Коварный UNION..

Иной раз не знаешь где затупишь. Казалось бы простой запрос с использованием UNION, а потратил кучу времени, чтобы выяснить, почему он иногда не корректно отрабатывает.
Было:
1 2 3 |
$sql="select * from (select amount,local_date as date,managers.fio as tar_id,'enter' as type from payments inner join managers on payments.mod_person=managers.person_id where agrm_id='$agrm_id' UNION " . "SELECT amount,DATE_ADD(period, INTERVAL 1 DAY) as date,tarifs.descr as tarif,'inet' as type FROM rentcharge inner join tarifs on rentcharge.tar_id=tarifs.tar_id where rentcharge.agrm_id='$agrm_id' and amount<>0 UNION " . "select usbox_charge.amount,usbox_charge.charge_date,tarifs.descr as tarif,'tv' from usbox_charge inner join usbox_services on usbox_charge.serv_id=usbox_services.serv_id inner join tarifs on tarifs.tar_id=usbox_services.tar_id where usbox_charge.amount<>0 and usbox_charge.agrm_id='$agrm_id') as res order by date"; |
Стало:
1 2 3 |
$sql="select * from (select amount,local_date as date,managers.fio as tar_id,'enter' as type from payments inner join managers on payments.mod_person=managers.person_id where agrm_id='$agrm_id' UNION ALL " . "SELECT amount,DATE_ADD(period, INTERVAL 1 DAY) as date,tarifs.descr as tarif,'inet' as type FROM rentcharge inner join tarifs on rentcharge.tar_id=tarifs.tar_id where rentcharge.agrm_id='$agrm_id' and amount<>0 UNION ALL " . "select usbox_charge.amount,usbox_charge.charge_date,tarifs.descr as tarif,'tv' from usbox_charge inner join usbox_services on usbox_charge.serv_id=usbox_services.serv_id inner join tarifs on tarifs.tar_id=usbox_services.tar_id where usbox_charge.amount<>0 and usbox_charge.agrm_id='$agrm_id') as res order by date"; |
В чем соль? Оператор UNION без опции ALL оказывается обладает свойствами группировки одинаковых значений в запросе. Например у меня, при одинаковых одновременных значениях даты и суммы происходила группировка этих строчек в одну…
Дерево на jquery с «drag and drop»

Для того чтобы организовать хранение дерева, массив данных должен содержать как минимум два параметра: id записи, и child — т.е. в иерархии к какой id относится эта запись. Пример child =0, если запись в «корне». Например структура в mysql в простейшем случае может быть такой: id,name,address,child
Для непосредственного отображения дерева удобно пользоваться jquery плагином dynatree. При перетаскивании элементов дерева при помощи «drag and drop», состояние ветвей записывается в БД. Ниже пример кода, какой он может быть: » Читать далее
Сервер не видит компьютеры в сети

Эх, давно я не брал шашку в руки и не админил сеть на базе Windows. А тут незадача: старый сервер Windows 2003 перестал видеть другие компьютеры в сети. Изучение журнала дало такую строчку:
слишком много неудачных попыток службы обозревателя сети
, а следом еще одна удивительная запись:
главный обозреватель сети gsegach бла-бла-бла чета там..
?? Как может быть главным обозревателем сети не сам сервер? Сходил к этому компьютеру, отключил на нем сервис «Обозреватель компьютеров». Сеть на сервере заработала.
Пример реализации прогресса на WEB странице
Задача: показать прогресс..ну например отправки большого количества СМС.
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//запускаю таймер с периодическим срабатыванием var timer = setInterval(function() { // отображаю прогрессбар $("#list2").load('predplatsmssendprogress.php?orgid='+defaultorgid+"&blibase="+$("#blibase").val()+"&grp="+$("#grp").val()); }, 2000); // запускаю рассылку СМС smstxt=$("#smstext").val(); $.get("smssend.php?orgid="+defaultorgid+"&blibase="+$("#blibase").val()+"&grp="+$("#grp").val(), { smstxt: smstxt} , function(data){ clearInterval(timer); // рисуем что всё ок alert("Работу закончил хозяин"); }); |