Автор Тема: Insert с исключением  (Прочитано 4272 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Mrak

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tatais.ru
Insert с исключением
« : 21 Марта 2006, 13:20:19 »
Вопрос таков.
ДБ Mysql 3.23.58
Имеется исходная "raw" таблица с номерами телефонов 68 столбцов.
Имеется таблица с номерами конференционных телефонов, 2 столбца.
id, conf.

Цель создать таблицу, где будут исключены номера конференционных телефонов.


$query_raw = "SELECT globalCallID_callId, callingPartyNumber, originalCalledPartyNumber, lastRedirectDn, dateTimeConnect, dateTimeDisconnect, duration, origDeviceName FROM cdr_log_raw ORDER BY globalCallID_callId";
$result_raw = mysql_query($query_raw);
while ($row_raw = mysql_fetch_array($result_raw))
{
   
   if($row_raw[0] > "0" && $row_raw[6] > "0" && $row_raw[7] != "\\"ccm-voice\\"")
   {
   $row_raw[0] = eregi_replace(\'"\', \'\', $row_raw[0]); //globalCallID_callId - порядковый номер звонка
   $row_raw[1] = eregi_replace(\'"\', \'\', $row_raw[1]); //callingPartyNumber - Номер А
   $row_raw[2] = eregi_replace(\'"\', \'\', $row_raw[2]); //originalCalledPartyNumber - Номер В
   $row_raw[3] = eregi_replace(\'"\', \'\', $row_raw[3]); //lastRedirectDn - Последняя переадресация
   $row_raw[4] = eregi_replace(\'"\', \'\', $row_raw[4]); //dateTimeConnect - Начало разговора
   $row_raw[5] = eregi_replace(\'"\', \'\', $row_raw[5]); //dateTimeDisconnect - Окончание разговора
   $row_raw[6] = eregi_replace(\'"\', \'\', $row_raw[6]); //duration - Длительность разговора
   $row_raw[7] = eregi_replace(\'"\', \'\', $row_raw[7]); //origDeviceName - MAC адрес клиента
   $row_raw[7] = eregi_replace(\'SEP\', \'\', $row_raw[7]); //origDeviceName - MAC адрес клиента

      if ($row_raw[3] != 1111 && $row_raw[3] != 2222 && $row_raw[3] != 3333 && $row_raw[3] != 4444 && $row_raw[3] != 5555) //НОМЕРА КОНФЕРЕНЦИЙ!!!
      {
         $query_agr="INSERT IGNORE INTO cdr_log_agr VALUES (\'\', \'".$row_raw[0]."\', \'".$row_raw[1]."\', \'".$row_raw[2]."\', \'".$row_raw[3]."\', \'".$row_raw[4]."\', \'".$row_raw[5]."\', \'".$row_raw[6]."\', \'".$row_raw[7]."\', \'0\')";
         $result_agr=mysql_query($query_agr) or die ("not insert")."\\n";
      }
   }
}

Этот код рабочий. Тут конференционные номера железно прибиты. Но при увеличении количества номеров придётся переписывать файл.

Подскажите плиз в каком направлении двигатся? Как исключать конференционные номера при вставке в таблицу?
« Последнее редактирование: 21 Марта 2006, 13:27:28 от Mrak »

Оффлайн Mrak

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tatais.ru
Insert с исключением
« Ответ #1 : 21 Марта 2006, 13:25:37 »
Есть ещё вариант, это заливка данных в базу без изменений и удаление циклом ненужных номеров.
Но боюсь, что при большом количестве записей сервер будет тормозить.

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
Insert с исключением
« Ответ #2 : 22 Марта 2006, 19:47:25 »
Не, слишком сложно всё, даже пытаться не буду.

Оффлайн reLax[0x00]

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 68
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.microcat.ru
Insert с исключением
« Ответ #3 : 23 Марта 2006, 20:58:52 »
Я знаю ответ - MySQL правда не очень хорошо знаю-но ты ограничишься всего 2-умя запросами к БД (2-умя потому что плохо SQL знаю-может можно и одним сделать все - пока выборкой одним запросом из 2-ух таблиц, чтобы из одной выбрать все и по ее значениям и применить эти значения с WHERE ко второй:) - пока не додумался). и никакие тут лишние циклы на PHP не нужны...так же как и лишняя БД без конференциями-тебе она точно отдельно нужна или всетаки лучше отфильтровать из тех двух чтобы был результат ? В субботу ориентировачно скажу как :) Щас не до этого - работа млин :(

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
Insert с исключением
« Ответ #4 : 23 Марта 2006, 22:44:31 »
Mrak

1. INSERT ... SELECT Syntax

2. По поводу конференц номеров:
a)ИМХО можно прописать как есть в условии WHERE && - ами

б)можно задействовать, регулярные выражения в условии WHERE или при SELECT- е в IF(col = regexp, false, true).
[off]Безработный[/off]

Оффлайн Mrak

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 13
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.tatais.ru
Insert с исключением
« Ответ #5 : 31 Марта 2006, 13:02:06 »
Спасибо.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28