From: | Mykola Dzham <i(at)levsha(dot)org(dot)ua> |
---|---|
To: | vvislobokov(at)lukoilperm(dot)ru |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: Есть л |
Date: | 2005-07-04 09:15:46 |
Message-ID: | 20050704091544.GH4355@expo.ukrweb.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Viktor Vislobokov wrote:
> Привет всем.
> Есть ли возможность по сетевому типу inet проверить вхождение адреса для
> СПИСКА значений inet?
> Т.е.
>
> есть некий IP адрес: xxx.xxx.xxx.xxx
>
> Есть также таблица сетей
>
> CREATE TABLE nets_tbl (
> id SERIAL PRIMARY KEY,
> netname CHAR(10),
> net INET UNIQUE
> );
>
> в которой забито несколько значений например:
> SELECT * FROM nets_tbl;
> id | name | net
> ----+--------+------------------
> 13 | perm | 195.222.128.0/19
> 14 | perm | 62.16.32.0/19
> 15 | perm | 195.42.134.0/24
>
> Мне надо сделать запрос, который бы позволил мне сказать, входит ли IP
> адрес xxx.xxx.xxx.xxx в любую из сетей, которая соответствует имени 'perm'.
>
> Напрашивается такой вариант:
> SELECT * FROM nets_tbl WHERE 'xxx.xxx.xxx.xxx' IN (SELECT net FROM
> nets_tbl WHERE name='perm');
>
> Однако, такой запрос всегда будет выдавать 0 записей, т.е. совпадения
> никогда не будет, если только значение в поле net не точно такое же как
> и у xxx.xxx.xxx.xxx. Это вроде бы понятно почему - надо сравнение делать
> с помощью функций, предназначенных для этого типа. Ищу такую функцию и
> нахожу "<<", но она работает только для единичных значений, т.е.
>
> SELECT * FROM nets_tbl WHERE 'xxx.xxx.xxx.xxx' << (SELECT net FROM
> nets_tbl WHERE id=13);
>
> работать будет, а вот:
>
> SELECT * FROM nets_tbl WHERE 'xxx.xxx.xxx.xxx' << (SELECT net FROM
> nets_tbl WHERE name='perm');
>
> нет, потому что:
> ERROR: more than one row returned by a subquery used as an expression
>
> Но мне бы хотелось сравнить значение именно со списком! КАК?
А может это просто чрезмерное увлечение вложенными запросами? :)
SELECT * FROM nets_tbl WHERE 'xxx.xxx.xxx.xxx' << net AND name='perm' ;
--
Mykola Dzham, LEFT-(UANIC|RIPE)
JID: levsha(at)jabber(dot)kiev(dot)ua
From | Date | Subject | |
---|---|---|---|
Next Message | Viktor Vislobokov | 2005-07-04 09:33:12 | Re: Есть ли та |
Previous Message | Viktor Vislobokov | 2005-07-04 09:01:57 | Есть ли такая возможность |