Forum Webscript.Ru
Программирование => PHP => Тема начата: Mrak от 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";
}
}
}
Этот код рабочий. Тут конференционные номера железно прибиты. Но при увеличении количества номеров придётся переписывать файл.
Подскажите плиз в каком направлении двигатся? Как исключать конференционные номера при вставке в таблицу?
-
Есть ещё вариант, это заливка данных в базу без изменений и удаление циклом ненужных номеров.
Но боюсь, что при большом количестве записей сервер будет тормозить.
-
Не, слишком сложно всё, даже пытаться не буду.
-
Я знаю ответ - MySQL правда не очень хорошо знаю-но ты ограничишься всего 2-умя запросами к БД (2-умя потому что плохо SQL знаю-может можно и одним сделать все - пока выборкой одним запросом из 2-ух таблиц, чтобы из одной выбрать все и по ее значениям и применить эти значения с WHERE ко второй:) - пока не додумался). и никакие тут лишние циклы на PHP не нужны...так же как и лишняя БД без конференциями-тебе она точно отдельно нужна или всетаки лучше отфильтровать из тех двух чтобы был результат ? В субботу ориентировачно скажу как :) Щас не до этого - работа млин :(
-
Mrak
1. INSERT ... SELECT Syntax (http://dev.mysql.com/doc/refman/4.1/en/insert-select.html)
2. По поводу конференц номеров:
a)ИМХО можно прописать как есть в условии WHERE && - ами
б)можно задействовать, регулярные выражения (http://dev.mysql.com/doc/refman/4.1/en/regexp.html) в условии WHERE или при SELECT- е в IF(col = regexp, false, true).
-
Спасибо.