Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
Всем привет, я как то уже поднимал вопрос по поводу ХП, но проблема не исчезла, хочется её добить.
Есть таблица городов ListOfOutgoingCallsByRegion откуда берём города, пока вручную (цикл я влепил, чтобы показать, что он тут нужен, если город обзвонили), далее выбрав город, запускам вторую процедуру с входными параметрами, или может быть фунция нужна? которая выбирала бы нужные мне 15% человек для обзвона. Сейчас объясню более конкретно, что мне нужно. В городе допустим есть 200 человек, обзвонили 50, осталось 150 человек для обзвона, их мы видим из второго селекта(например tmpBlock_dt нулевое). Теперь выбираем 15% из 200 человек и получаем 30 человек, этих 30 нам нужно обзвонить из 150, если мы это можем сделать, то, например, функция возвращает 1 и мы работаем с этим городом. Если нет, возвращаем 0 и переходим во внешней хранимке к следующему городу.
 
-- set @town = 'Москва'
while 1 = 1 
	begin
	        set @town = (select top 1 NameTown from dbo.ListOfOutgoingCallsByRegion 
			where OrderList NOT between 1 and 4 order BY orderlist)
				exec процедура или запуск функции

End
Этот селект я привёл для того, чтобы показать, как я вижу это внутри внутренней ХП, если писать через неё... а быть может это можно как то сделать в одной ХП без доп ХП и функции?
set @tbId = (select (count(Id)*15/100) from dbo.ListOfOutgoingCalls WITH(NOLOCK) 
						where Efficiency=1 and tmpBlock_act=0 and tmpBlock_dt is null and block=2
							and statusId=0 and nameOrg='Столплит' and NameTown='Москва' and statusId<>8)
Это делается для того, чтобы равномерно обзванивать людей по всем городам.
Да простит меня Glory )))

Надеюсь в этот раз я более полно описал, что мне нужно, а то как давит начальство(((
Первая тема здесь [url=]https://www.sql.ru/forum/actualthread.aspx?bid=1&tid=872642&hl=alexxx_22[/url] там есть примеры таблиц

SQL Server 2008 К2
19 авг 11, 15:11    [11146993]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
Alexxx_22
Надеюсь в этот раз я более полно описал, что мне нужно, а то как давит начальство(((
Нет, не полно.

Вопроса то нет, что вы хотите :-) Только утвердительные предложения.
19 авг 11, 16:01    [11147534]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Glory
Member

Откуда:
Сообщений: 104751
Ставки растут. В прошлой теме было 5%, а тут уже все 15%
19 авг 11, 16:02    [11147540]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
_ч_
Member

Откуда:
Сообщений: 1446
Alexxx_22
Это делается для того, чтобы равномерно обзванивать людей по всем городам.

Ужасные спам-обзвонщики, из принципа нельзя вам помогать.
Задолбали спамом в телефонной трубке 8)
19 авг 11, 16:29    [11147816]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
Glory, мне нужна функция, которая возвращала бы 1 или 0. То есть 1, город по условию нам подходит, мы выходим из цикла и дальше с ним работаем, если 0, то переход на следующий город.

P.S. Мы отчасти спамеры, но в отличии от остальных предлагаем банковские карты!
27 авг 11, 16:21    [11189783]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
Alexxx_22
Мы отчасти спамеры, но в отличии от остальных предлагаем банковские карты!


чем спам с картами "полезнее" спама с ххх-продукцией?

бан-бы вам
27 авг 11, 16:36    [11189816]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
лолл
Member

Откуда:
Сообщений: 450
+1 гнать поганой метлой)))
29 авг 11, 00:03    [11192790]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
Ну что вы за люди? Если не можете помочь, то молчите! Я лично не спамер, я делаю свою работу, и делаю её хорошо, но временно мне приходится решать другие задачи... именно SQL!
29 авг 11, 00:52    [11192910]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Alexxx_22,

а вопрос то где? "1, если город нам подходит"?
Ну нам то откуда знать - подходит или нет. Критерий "подходящести" - где?
29 авг 11, 01:00    [11192918]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
Locky, я же писал: "В городе допустим есть 200 человек, обзвонили 50, осталось 150 человек для обзвона. Теперь выбираем 15% из 200 человек и получаем 30 человек, этих 30 нам нужно обзвонить из 150, если мы это можем сделать, то, например, функция возвращает 1 и мы работаем с этим городом, если 0, то переходим на другой город из списка"
29 авг 11, 11:02    [11193657]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
Кто любит спам в почте или навзячивые звонки на домашний телефон, с рекламой чего-либо, поднимите руки ?

ТС, делайте свою работу плохо, как можно хуже!
29 авг 11, 11:11    [11193708]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
Alexxx_22
P.S. Мы отчасти спамеры, но в отличии от остальных предлагаем банковские карты!
Понятно...
Alexxx_22
Glory, мне нужна функция, которая возвращала бы 1 или 0. То есть 1, город по условию нам подходит, мы выходим из цикла и дальше с ним работаем, если 0, то переход на следующий город.
Тогда лучьше написать рекурсивную CLR - функцию!
29 авг 11, 11:11    [11193709]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Alexxx_22
Locky, я же писал: "В городе допустим есть 200 человек, обзвонили 50, осталось 150 человек для обзвона. Теперь выбираем 15% из 200 человек и получаем 30 человек, этих 30 нам нужно обзвонить из 150, если мы это можем сделать, то, например, функция возвращает 1 и мы работаем с этим городом, если 0, то переходим на другой город из списка"

Откуда я(мы) знаю (знаем) могу(можем) ли вы их обзвонить?
каков критерий этого "можем"?
как по мне, так если есть номер телефона - то могу обзвонить, если нету - так не могу.
29 авг 11, 11:13    [11193719]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
DENIS_CHEL
Member

Откуда:
Сообщений: 23097
Я вообще не понял, почему ТС не может все решить в одном запросе...
29 авг 11, 11:16    [11193736]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
если поле tmpBlock_dt пустое, то нам подходит... если стоит дата, то не подходит... все номера телефонов есть
29 авг 11, 11:18    [11193743]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
Можно всё решить и в одном запросе, но как?
29 авг 11, 11:19    [11193751]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
Модераторы, прикройте уже это безобразие!!!
И айпишник отправьте куда следует. Они еще и автоматизируются...
29 авг 11, 11:20    [11193759]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
_ч_
Member

Откуда:
Сообщений: 1446
А вот интересно, существуют ли телефоны, в которые можно забить номера этих спамщиков, чтобы отсечь их звонки? Если вот Alexxx_22 позвонит мне с номера 777, я его забиваю куда-нибудь в телефонную книгу аппарата и если он мне звонит в следующий раз, то его на его номер 777 автоматически поступают частые гудки (занято).

Вот этот вопрос гораздо более актуален!
29 авг 11, 11:24    [11193789]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
_ч_, такие функции предоставляют операторы,
можно включить чёрный либо белый список, соответственно
при вкл. чёрном для номеров из списка Ваш номер будет всегда занят,
при вкл. белом занят для всех, кроме номеров из списка.
29 авг 11, 11:29    [11193826]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
_ч_
Member

Откуда:
Сообщений: 1446
Geep,
спасибо за информацию
29 авг 11, 11:37    [11193876]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
Если я виноват в чём то, то извиняюсь... не надо банить!
29 авг 11, 11:41    [11193910]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Geep
Member

Откуда: Москва
Сообщений: 975
_ч_,
Знаю точно что КантриКом предоставляет (у них это входит в стандартый набор).
29 авг 11, 11:44    [11193937]     Ответить | Цитировать Сообщить модератору
 Re: Цикл в цикле или вызов ХП внутри ХП  [new]
Alexxx_22
Guest
Решение найдено:

					
set @tbId = (select top 1 id from 
(select id,
	count(*) over (partition by nametown) total,
	rank() over (partition by nametown order by fioUser1,fioUser2,fioUser3) cur
from ListOfOutgoingCalls
	where isnull(tmpBlock_dt,getdate())>=cast(getdate() as date)) a
	where a.cur<=a.total*15/100 ORDER BY newid()) 

Всем спасибо!
30 авг 11, 12:09    [11199898]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить