Я работаю с приложением, в котором имеются следующие таблицы для хранения диапазонов IP-адресов:
IP_RANGE
--------
RANGE_ID primary key
NETWORK_ID foreign key into NETWORK table (not described here)
IP_ID foreign key into IP_ADDRESS table
RANGE_TYPE varchar, values "START" or "END"
IP_ADDRESS
----
IP_ID primary key
IP_NETWORK number (decimal representation of network portion of address)
IP_INTERFACE number (decimal representation of interface portion of address)
Данный диапазон IP-адресов представлен двумя строками в таблице IP_RANGE: одна со значением RANGE_TYPE«START» и другой со значением «END», оба из которых имеют одинаковое значение для NETWORK_ID.Каждая из этих строк также указывает на строку в таблице IP_ADDRESS, в которой хранятся фактические адреса.
Мне нужно написать инструкцию SELECT, которая дает мне все NETWORK_ID, которые имеют диапазоны IP-адресов, которые имеют любые общие адреса сзаданный произвольный диапазон IP-адресов.
Я знаю, как проверять таблицу IP_ADDRESS, чтобы найти отдельные адреса, которые находятся внутри или вне моего желаемого диапазона, но я не знаю, как ограничить мой поиск только парами начала / концакоторые имеют тот же NETWORK_ID.
(я полагаю, что это действительно чистый вопрос SQL, а не что-то конкретно связанное с IP-адресами.)
Oracle Database 11g Enterprise Edition Release 11.1.0.7.0- 64-битное производство