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

Материал из Oktell
Перейти к: навигация, поиск
Строка 13: Строка 13:
 
FROM (
 
FROM (
 
         SELECT COALESCE((SELECT count(*)  
 
         SELECT COALESCE((SELECT count(*)  
                                            FROM A_RuleRecords s_r   
+
                      FROM A_RuleRecords s_r   
                                              LEFT JOIN A_NumberPlanAction s_npa ON  s_r.ReactID = s_npa.NumID  
+
                      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  
+
                      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
+
                      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
 
         , np.Prefix, np.Visible
 
             FROM A_NumberPlan np  
 
             FROM A_NumberPlan np  

Версия 12:50, 10 июня 2014

Наверх

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