>>Но мне бы хотелось сравнить значение именно со списком! КАК?
>>
>>
>
>А может это просто чрезмерное увлечение вложенными запросами? :)
>
>SELECT * FROM nets_tbl WHERE 'xxx.xxx.xxx.xxx' << net AND name='perm' ;
>
>
>
Вот что бывает, когда пытаешься упросить задачу для объяснения. ;)
Всё сложнее, поэтому (на мой взгляд) и понадобился список. Я сильно
упростил задачу, чтобы дать понять, что я хочу. В итоге получил более
рациональное и правильное решение, но увы не применимое в моём случае, а
только в том случае, который я описал.
Ладно попробуем снова, теперь по полной программе:
Есть таблица тафика:
CREATE TABLE traffic_tbl (
id SERIAL PRIMARY KEY,
tdate DATE,
src_ip INET NOT NULL,
src_port INT,
dst_ip INET NOT NULL,
dst_port INT,
size INT4 NOT NULL
);
где полный трафик
Есть таблица сетей:
CREATE TABLE nets_tbl (
id SERIAL PRIMARY KEY,
name VARCHAR(40) NOT NULL,
net INET NOT NULL
);
В этой таблице есть ряд записей про пермские сети и ряд записей про IP
адреса сетевых интерфейсов компьютера alpha
Хочу получить данные о всём пермском трафике, исходящем с компьютера
alpha по всем сетевым интерфейсам
в некую таблицу results_tbl:
INSERT INTO results_tbl (month, year, note, size)
VALUES(4,2005,'Пермский исходящий трафик с alpha',
(SELECT sum(size) FROM traffic_tbl WHERE
src_ip IN (SELECT net FROM nets_tbl WHERE name='alpha') AND
dst_ip __________IN__________ (SELECT net FROM nets_tbl
WHERE name='perm')));
Вот там где ______IN________ очень бы хотелось сравнить со списком. Как
сделать подругому - я не знаю, ибо не очень силён в SQL.
--
С уважением, Виктор