id parent
Страна1 Страна1
Область1 Область1
Область1 Страна1
Район1 Район1
Район1 Область1
Район1 Страна1
Город1 Город1
Город1 Район1
Город1 Область1
Город1 Страна1
Страна2 Страна2
Город2 Город2
Город2 Страна2
Объект пренадлежит группе. Как узнать что объект пренадлежит группе на уровень выше?
Суть: Объект пренадлежит группе. Как узнать что объект пренадлежит группе на уровень выше?
А теперь подробнее. Есть таблица со странами, и другие территориальные деления. Проблема в том что может быть разные уровни вложенности, т.е Страна/Область/Район/Город или Страна/Город.
Я не хочу создавать отдельное поле для каждого уровня вложенности, а запоминать только одно значение к которому происходит привязка или идентификатор.
Требование высокая скорость выборки объектов (>300k)
Я например привязал объект к городу, а как его найти если я ищу по району или стране. Не совсем понятно.
Подскажите как сделать лучше и чтоб быстро работало.
Имхо самый нересурсоёмкий способ для реализации такой пакости - создать доп табличку id parent_id, и хранить в ней данные таким образом:
пример Страна1/Область1/Район1/Город1 и Страна2/Город2
Код:
И поиск в 1 запрос select * from blahblah where условиепоиска and группа in (select * from tableidparent where parent=группа)
[COLOR="silver"]--Это в теории, на практике я никогда такого не делал[/COLOR]
Хотя в нете есть много примеров рекурсивных выборок или хранимой процедурой такое можно реализовать и в ней loop/end loop, тут уж на что фантазии хватит и что на практике окажется более приемлемым.