На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! информация о разделе
user posted imageДанный раздел предназначается исключительно для обсуждения вопросов использования языка запросов SQL. Обсуждение общих вопросов, связанных с тематикой баз данных - обсуждаем в разделе "Базы данных: общие вопросы". Убедительная просьба - соблюдать "Правила форума" и не пренебрегать "Правильным оформлением своих тем". Прежде, чем создавать тему, имеет смысл заглянуть в раздел "Базы данных: FAQ", возможно там уже есть ответ.

Модераторы: Akina
  
> Обработка телефонных вызовов на SQL
    есть 2 таблицы(SQL Server 2005)
    Как прописать соответствие м/у ними, чтобы можно было вычислить стоимость каждого звонка, и классифицировать звонки по виду связи


    ExpandedWrap disabled
      Первая(соответствие кода выхода стоимости за минуту)
       
      ***********************************************************************
      Код для связи  *Вид Связи*стоимость за мин.*
      ***********************************************************************
          91      *   город          *       0           *
          92      *   город          *       0           *
          93      *   город          *       0           *
          94      *   город          *       0           *
          95      *   город          *       0           *
          96      *   город          *       0           *
          97      *   город          *       0           *
          98      *   междугородный вызов*30*
          99      *   город          *       0           *
          90      *   спец. службы*     0           *
          233     *   область      *       123         *
          234     *   область      *       45          *
          16001   *   новый офис *       23          *
          16002   *   новый офис *       23          *
          17003   *   склад          *       0           *
          51      *   внутренний звонок*0     *
          52      *   внутренний звонок*0     *
      **********************************************************************
       
       
      Вторая(длительность телефонных разговоров)
      ***************************************
      Набранный номер*длительность*
      ***************************************
      989273698541    *   2           *
      902             *   7           *
      2336596         *   85          *
      2348965874      *   5           *
      51365           *   51          *
                  и так далее
      ExpandedWrap disabled
        SELECT SUM(b.[длительность] * a.[стоимость за мин])
        FROM table2 b
        JOIN  table1 a ON LEFT(b.Набранный номер, LEN(a.[Код для связи])) = a.[Код для связи]
        Цитата Sam83@list.ru @
        Вторая(длительность телефонных разговоров)

        А длительность в минутах и без секунд?
          на самом деле пример несколько абстрактный.
          Проблема связать 2 таблицы соотношением, при условии что в таблице 1 будет "маска"(только первые цифры из звонков 2ой таблицы)
          если бы код выходя был фиксированной длинны - проблем бы не было, из каждого номера 2ой таблицы взял, скажем, первые 3 цифры и содал бы доп. столбик, и связал бы 2 таблицы. НО!!! код выхода переменной длины.
            Цитата Sam83@list.ru @
            НО!!! код выхода переменной длины.

            А как определить что это "код" а далее телефон?
              Цитата Sam83@list.ru @
              Проблема связать 2 таблицы соотношением, при условии что в таблице 1 будет "маска"(только первые цифры из звонков 2ой таблицы)

              MIF дал рабочий вариант. Для связывания.
              Возможен также вариант для отбора по маске:
              ExpandedWrap disabled
                WHERE b.Набранный номер LIKE a.[Код для связи] + '%'
              Сообщение отредактировано: Akina -
                Цитата Bas @
                Цитата Sam83@list.ru @
                НО!!! код выхода переменной длины.

                А как определить что это "код" а далее телефон?

                Коды уникальны, т.е. если в начале номера 98 - то набранный номер(сколько бы там не было цифр) "междугородный вызов", а его стоимость 30 за еденицу времени.
                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                0 пользователей:


                Рейтинг@Mail.ru
                [ Script execution time: 0,0334 ]   [ 15 queries used ]   [ Generated: 28.03.24, 15:21 GMT ]