Внутренний номер сотрудника по ID пользователя — различия между версиями
Материал из Oktell
| Строка 3: | Строка 3: | ||
SQL-запрос находит по таблице внутренний номер пользователя по его идентификатору. | SQL-запрос находит по таблице внутренний номер пользователя по его идентификатору. | ||
| − | + | * Запрос находит такой внутренний номер, в котором может быть только один пользователь и несколько внешних номеров и линий. | |
| + | * Если в номере больше 1 пользователя или есть внутренние номера, то считается что это номер групповой. | ||
| + | * Если у сотрудника все номера групповые возвращается тот, у которого меньше объектов. | ||
[[Файл:Внутренний номер по IDuser 001.png|center]] | [[Файл:Внутренний номер по IDuser 001.png|center]] | ||
| − | + | SELECT top 1 @prefix=Prefix | |
| − | + | FROM ( | |
| − | + | SELECT COALESCE((SELECT count(*) | |
| − | + | FROM A_RuleRecords s_r | |
| − | + | LEFT JOIN A_NumberPlanAction s_npa ON s_r.ReactID = s_npa.NumID | |
| − | + | LEFT JOIN A_RuleRecords ss_r ON s_npa.ExtraId = ss_r.RuleId | |
| − | + | WHERE s_r.RuleID = r.RuleID AND (s_r.ReactID IN (SELECT ID FROM A_USERS) OR s_npa.NumID IS NOT NULL)),0) cnt | |
| − | + | , np.Prefix, np.Visible | |
| + | FROM A_NumberPlan np | ||
| + | INNER JOIN A_NumberPlanAction npa ON np.ID=npa.NumID | ||
| + | JOIN A_RuleRecords r ON r.RuleID = npa.ExtraId AND r.reactid=@userid | ||
| + | AND InnerAddressType=0 -- Если только "Внутренние номера" | ||
| + | ) t | ||
| + | ORDER BY cnt, Visible DESC | ||
где | где | ||
Версия 12:49, 10 июня 2014
SQL-запрос находит по таблице внутренний номер пользователя по его идентификатору.
- Запрос находит такой внутренний номер, в котором может быть только один пользователь и несколько внешних номеров и линий.
- Если в номере больше 1 пользователя или есть внутренние номера, то считается что это номер групповой.
- Если у сотрудника все номера групповые возвращается тот, у которого меньше объектов.
SELECT top 1 @prefix=Prefix
FROM (
SELECT COALESCE((SELECT count(*)
FROM A_RuleRecords s_r
LEFT JOIN A_NumberPlanAction s_npa ON s_r.ReactID = s_npa.NumID
LEFT JOIN A_RuleRecords ss_r ON s_npa.ExtraId = ss_r.RuleId
WHERE s_r.RuleID = r.RuleID AND (s_r.ReactID IN (SELECT ID FROM A_USERS) OR s_npa.NumID IS NOT NULL)),0) cnt
, np.Prefix, np.Visible
FROM A_NumberPlan np
INNER JOIN A_NumberPlanAction npa ON np.ID=npa.NumID
JOIN A_RuleRecords r ON r.RuleID = npa.ExtraId AND r.reactid=@userid
AND InnerAddressType=0 -- Если только "Внутренние номера"
) t
ORDER BY cnt, Visible DESC
где
- @prefix (вых) - содержит внутренний номер пользователя
- @userid (вх) - ID пользователя
ВНИМАНИЕ: Начиная с версии 2.10 внутренний номер пользователя может быть найден с помощью компонента "Статус объекта"
