Внутренний номер сотрудника по ID пользователя

Материал из Oktell
Перейти к: навигация, поиск

Наверх

SQL-запрос находит по таблице внутренний номер пользователя по его идентификатору.

  • Запрос находит такой внутренний номер, в котором может быть только один пользователь и несколько внешних номеров и линий.
  • Если в номере больше 1 пользователя или есть внутренние номера, то считается что это номер групповой.
  • Если у сотрудника все номера групповые возвращается тот, у которого меньше объектов.
Внутренний номер по IDuser 001.png


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 внутренний номер пользователя может быть найден с помощью компонента "Статус объекта"