BiTel

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

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




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
СообщениеДобавлено: 13 май 2013, 12:31 
Не в сети
Аватара пользователя

Зарегистрирован: 01 апр 2011, 06:09
Сообщения: 27
Карма: 0
Пытаюсь составить запрос, который бы выдал договора с нулевой наработкой за 2013 год.
Пока что есть вот такой запрос:
Код:
select c.title, cb.mm from contract AS c,contract_balance AS cb where (cb.yy = 2013 and cb.mm>0 and cb.mm<6) and cb.summa3=0 and cb.cid=c.id and c.gr&(1<<3)>0 group by cb.cid

Но похоже, что это выводится любой договор, у которого хотя бы по одному месяцу не было наработки.
А Как вывести договора, у которых по всем месяцам этого года наработка нулевая?

_________________
Сервер: вер. 5.2 сборка 1188 от 15.05.2012 12:59:33
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2013, 12:40 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Код:
select c.title, cb.mm, sum(summa3) as s from contract AS c,contract_balance AS cb where (cb.yy = 2013 and cb.mm>0 and cb.mm<6) and cb.cid=c.id and c.gr&(1<<3)>0 group by cb.cid having s=0


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2013, 13:41 
Не в сети
Аватара пользователя

Зарегистрирован: 01 апр 2011, 06:09
Сообщения: 27
Карма: 0
Не сработало. Выбирает договора, у которых, как минимум, по одному месяцу была нулевая наработка.
Ещё варианты?

_________________
Сервер: вер. 5.2 сборка 1188 от 15.05.2012 12:59:33
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 13 май 2013, 15:20 
Не в сети
Разработчик

Зарегистрирован: 07 апр 2007, 23:51
Сообщения: 4494
Откуда: Уфа, Россия
Карма: 187
Код:
select title from contract where id not in (select cid from contract_balance where summa3>0 and (yy=2013 and mm>0 and mm<6) group by cid)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 май 2013, 08:12 
Не в сети
Аватара пользователя

Зарегистрирован: 01 апр 2011, 06:09
Сообщения: 27
Карма: 0
С limit 1 выполнялся минут 15.
Кто в мускуле хорошо разбирается, помогите.

_________________
Сервер: вер. 5.2 сборка 1188 от 15.05.2012 12:59:33
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 май 2013, 12:23 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
Начните с этого
Код:
select * from (select cb.cid,cb.mm, sum(summa3) s3 from contract_balance cb where yy=YEAR(CURDATE()) group by cid having s3=0) as t1

добавьте необходимый соус/данные дальше используя эту таблицу как производную


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 14 май 2013, 12:49 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 29 мар 2010, 23:11
Сообщения: 5854
Карма: 472
Давно писал для каких-то своих нужд.
Правда не помню оно работает корректно или нет :D
Не исключено что я потом переписывал, но не сохранил
Код:
SELECT contract.id, contract.title, contract.comment, contract.STATUS, contract.fc
FROM contract
   LEFT JOIN contract_account AS account ON contract.id=account.cid AND (account.mm IS NULL OR account.mm<=CURDATE())
  WHERE account.mm IS NULL
  AND contract.fc = 1

_________________
Цитаты великих людей :umnik:
Напишите в helpdesk © stark
повторяю: => хелпдеск => доработка => профит © dimOn
свершилось... © skn
Мой код изящен, лёгок, оригинален, краток. Как прохладный весенний ветерок, как звонкий ручей! © dimOn
Вежливый разработчик © Artur
Эти баги тоже исправлены, как и те, которые еще не написаны © Artur
ну т.е. существует воркэраунд, ок © dimOn


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 17 май 2013, 06:39 
Не в сети
Аватара пользователя

Зарегистрирован: 01 апр 2011, 06:09
Сообщения: 27
Карма: 0
aardvark писал(а):
Начните с этого
Код:
select * from (select cb.cid,cb.mm, sum(summa3) s3 from contract_balance cb where yy=YEAR(CURDATE()) group by cid having s3=0) as t1

добавьте необходимый соус/данные дальше используя эту таблицу как производную


Можно подробней?
В вашем запросе достаточно лишь чтобы в одном месяце была наработка = 0, а надо чтобы во всех месяцах была нарабтка = 0.

_________________
Сервер: вер. 5.2 сборка 1188 от 15.05.2012 12:59:33
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.6.0_26


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 май 2013, 07:26 
Не в сети

Зарегистрирован: 22 дек 2008, 13:02
Сообщения: 270
Откуда: Москва
Карма: 27
не достаточно чтобы в одном месяце наработка была ноль. нужно чтобу сумма наработок была = 0, тогда договор попадёт. Проблема будет если только у вас возможна отрицательная наработка.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 05 июн 2013, 05:54 
Не в сети

Зарегистрирован: 17 авг 2012, 09:46
Сообщения: 42
Откуда: Чита
Карма: 0
S-10 писал(а):
С limit 1 выполнялся минут 15.
Кто в мускуле хорошо разбирается, помогите.



тут не то что бы в мускуле нужно разбираться хорошо, тут как минимум знать базу нужно, например в версии 5.1 если никаких движений в месяце по договору не было то в табличке contract_balance вообще никакой записи не будет по данному договору в данном месяце.

вот проверь

Код:
select
    cc.cid
from
(select
contract_balance.cid,
sum(contract_balance.summa3) as summ
from contract
left join contract_balance on cid=contract.id
where yy=2013
and contract.status!=3
group by contract_balance.cid) as cc
where cc.summ=0

_________________

Клиент: вер. 5.1 сборка 685
Сервер: вер. 5.1 сборка 758
Linux version 2.6.18 (Red Hat 4.1.2-46)


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

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


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

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


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

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