|
|
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
Ситуация: Я получаю данные из телефонной станции "TelePOK": [DialID], [LocalLine], [PhoneNum], [Date], [Time], [Duration] и у меня есть справочник тарифов "Tarif": [ID], [TelKod], [Destination], [Zone], [UnitPrice] Задача: Получить на выходе: [DialID], [LocalLine], [PhoneNum], [Date], [Time], [Duration], [Destination], [Zone], [UnitPrice] ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 13:20 |
|
||
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
Дык а как они связаны, эти два набора? По какому полю, признаку? И, кстати, ответ нужен в виде чего, строки SELECT? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 13:32 |
|
||
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
Вот втом-то и заморочка: если есть номера 826222456 369874 963214 826954567 826545698 и коды: 826 - A 8269 - B 8265 - C соответственно: 826222456 - A 369874 - "?" 963214 - "?" 826954567 - B 826545698 - C ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 13:50 |
|
||
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
из вашего последнего сообщения непонятно: - какие значения содержит [TelKod], - что такое A, B, C - это данные? где? - что делать со знаками вопроса - "?" Нераспознанные? Или местные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 14:12 |
|
||
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
DIALED [DialID], [PhoneNum] TARIF [ID], [TelKod], [UnitPrice] SELECT_RESULT [PhoneNum], [UnitPrice] Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Принцип наверное такой! А конкретное решение надо на базе ковырять! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 14:44 |
|
||
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
2mahoune А может можно пояснить? Надо создать запрос который определил бы код телефонного номера (таблица 1 ) и из справочника кодов и тарифов (таблица 2 ) определил цену на разговоры... Ну а те коды которые не знает проигнорировал бы... и последнее, местные номера шестизначные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 17:07 |
|
||
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
Смысл всего моего запроса в следующем! Изначально тебе надо понять какой тариф применить к набранному номеру! Но как я у тебя посмотрел тарифные зоны пересекаются, пример: 826 и 8269 из чего следует, что надо разобрать сначала максимальный по длинне описанную тарифную зону! Что-б понять какая зона была использована при звонке можно воспользоваться 2-мя вариантами! Не универсальный! Взять за максимум определяющий тарифную зону 4 символа и делать соответственно 4 JOIN одной и той-же таблицы тарифы под разными алиасами к таблице звонков. Выбираем наибольее совпавшиую тарифную зону из поля и в соответствии с ней и тариф! Это то что я и применил! Вариант второй - Универсальный. Выбрать из таблицы тарифы код зоны и его длинну (символов). Потом находим код зоны совпавший по максимальному кол-ву символов с набранным номером и выводим его! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 18:02 |
|
||
|
SQL + Телефонная станция = с:-)
|
|||
|---|---|---|---|
|
#18+
для приведенных таблиц связь должна быть через функцию dialed like telcode+'%' или telcode=left(dialed,len(telcode)) причем по тестам like быстрее работает. Например select * from calls left outer join codes on dialed like telcode+'%' Для того чтобы коды были у всех - добавь коды 1,2,3,4,5,6,7,9 как город по цене города - все равно ведь придется добавить 8095 Есть вариант преобразовывать дайледы в международный формат (мне не нравится, но имеет смысл если городских мало) далее возникнет новая проблема - как из двух одинаково начинающихся кодов выбрать более подходящий но это уже совсем другая история ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2002, 18:14 |
|
||
|
|

start [/forum/topic.php?fid=45&fpage=1838&tid=1682938]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
28ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 364ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...