Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Network Address Functions & IN / 5 сообщений из 5, страница 1 из 1
07.04.2008, 03:21
    #35238495
Степан H.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Network Address Functions & IN
Запрос вида

Код: plaintext
select ip_addr from test where ip_addr << '10.10.200.0/21'

работает на УРА ....
но что, если сеть '10.10.200.0/21' содержится в некой таблице network_tbl, и в этой же таблице находятся и другие сети?
Как построить запрос чтобы выбрать те ip_addr которые попадают в сети из таблицы network_tbl.

P.S. задачку эту я для себя уже решил, используя триггера, которые по факту внесения сети в network_tbl строят в подчиненной таблице network_det_tbl все IP из этой сети... а дальше банальное IN. Благо сети небольшие. Есть и еще один способ, однако он не решен методом SQL.

Однако очень хочется увидеть красивое решение!! )))
...
Рейтинг: 0 / 0
07.04.2008, 08:33
    #35238593
_Андрей_М
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Network Address Functions & IN
...
Рейтинг: 0 / 0
07.04.2008, 08:45
    #35238612
_Андрей_М
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Network Address Functions & IN
Хотя, прочитав вопрос несколько раз окончательно запутался, что нужно получить.
...
Рейтинг: 0 / 0
07.04.2008, 09:26
    #35238655
_Андрей_М
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Network Address Functions & IN
Может, это имеется в виду?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
create table test_inet (ipaddr inet);
insert into test_inet values ('192.168.0.1');
insert into test_inet values ('192.168.0.2');
insert into test_inet values ('192.168.0.3');
insert into test_inet values ('192.168.0.5');
insert into test_inet values ('192.168.0.6');
insert into test_inet values ('192.168.0.7');
insert into test_inet values ('192.168.0.8');
insert into test_inet values ('192.168.2.1');
insert into test_inet values ('192.168.2.2');
insert into test_inet values ('192.168.2.3');
insert into test_inet values ('192.168.3.4');
insert into test_inet values ('192.168.3.5');
insert into test_inet values ('192.168.3.6');

create table test_subnet (netmask inet);
insert into test_subnet values ('192.168.0.0/24');
insert into test_subnet values ('192.168.1.0/24');
insert into test_subnet values ('192.168.2.0/24');

select *
from test_inet
join test_subnet on test_inet.ipaddr << test_subnet.netmask
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
  ipaddr         netmask
----------------------------
 192 . 168 . 0 . 1     192 . 168 . 0 . 0 / 24 
 192 . 168 . 0 . 2     192 . 168 . 0 . 0 / 24 
 192 . 168 . 0 . 3     192 . 168 . 0 . 0 / 24 
 192 . 168 . 0 . 5     192 . 168 . 0 . 0 / 24 
 192 . 168 . 0 . 6     192 . 168 . 0 . 0 / 24 
 192 . 168 . 0 . 7     192 . 168 . 0 . 0 / 24 
 192 . 168 . 0 . 8     192 . 168 . 0 . 0 / 24 
 192 . 168 . 2 . 1     192 . 168 . 2 . 0 / 24 
 192 . 168 . 2 . 2     192 . 168 . 2 . 0 / 24 
 192 . 168 . 2 . 3     192 . 168 . 2 . 0 / 24 
...
Рейтинг: 0 / 0
07.04.2008, 10:59
    #35238915
Степан H.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Network Address Functions & IN
спасило _Андрей_М . про JOIN я как-то не подумал.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Network Address Functions & IN / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]