MaxiStyle
Новичок
База данных кодов телефонов
Задача:
Необходимо определить регион к которому принадлежит телефонный номер, для этого существует список кодов телефона.
Напрмер: телефон 9243000000
В списке код телефона: 92430 => Хабаровский край.
Для этого организовал структуру:
//справочник регионов
CREATE TABLE `region` (
`rid` int(11) NOT NULL
`region` varchar(100) NOT NULL
PRIMARY KEY (`rid`)
);
//справочник кодов
CREATE TABLE `cods` (
`cod` int(11) NOT NULL,
`rid` int(11) NOT NULL,
PRIMARY KEY (`cod`)
);
Скрипт получает номер телефона и перебирает его в базе:
"SELECT rid FROM cods WHERE
cod LIKE LEFT('".$nomer."',8) OR
cod LIKE LEFT('".$nomer."',7) OR
cod LIKE LEFT('".$nomer."',6) OR
cod LIKE LEFT('".$nomer."',5) OR
cod LIKE LEFT('".$nomer."',4) OR
cod LIKE LEFT('".$nomer."',3)
LIMIT 1"
Основная проблема в том, что код телефона переменной длянаы и неизвестно какая часть телефона является кодом.
Используемое мною решение справляется с задачей. Однако порой необходимо определить регион у 10000 номеров.
Есть ли более рациональное решение такой задачи?
Задача:
Необходимо определить регион к которому принадлежит телефонный номер, для этого существует список кодов телефона.
Напрмер: телефон 9243000000
В списке код телефона: 92430 => Хабаровский край.
Для этого организовал структуру:
//справочник регионов
CREATE TABLE `region` (
`rid` int(11) NOT NULL
`region` varchar(100) NOT NULL
PRIMARY KEY (`rid`)
);
//справочник кодов
CREATE TABLE `cods` (
`cod` int(11) NOT NULL,
`rid` int(11) NOT NULL,
PRIMARY KEY (`cod`)
);
Скрипт получает номер телефона и перебирает его в базе:
"SELECT rid FROM cods WHERE
cod LIKE LEFT('".$nomer."',8) OR
cod LIKE LEFT('".$nomer."',7) OR
cod LIKE LEFT('".$nomer."',6) OR
cod LIKE LEFT('".$nomer."',5) OR
cod LIKE LEFT('".$nomer."',4) OR
cod LIKE LEFT('".$nomer."',3)
LIMIT 1"
Основная проблема в том, что код телефона переменной длянаы и неизвестно какая часть телефона является кодом.
Используемое мною решение справляется с задачей. Однако порой необходимо определить регион у 10000 номеров.
Есть ли более рациональное решение такой задачи?