URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 4622
[ Назад ]

Исходное сообщение
"Выборка из таблицы"

Отправлено Retif , 06-Сен-05 12:26 
Добрый день ALL!
С SQL работаю недавно - потому прошу сильно не пинать.
Проблема следующая:
Есть две таблицы (таблица запросов (from_relay, to_relay)  и таблица паритетных сетей (netAddr, netMask)
Сделал выборку записей из таблицы запросов - где to_relay входит в паритетные сети. Это работает нормально

SELECT t1.from_addr FROM request AS t1, paritet as t2 WHERE t2.netAddr = t1.to_relay & ((~(POW(2,32-t2.netMask)-1))&0xFFFFFFFF);

Но вопрос в том - что необходимо сделать обратный запрос, т.е выбрать те записи в которых to_relay не входит в паритетные сети
Написал так:

SELECT t1.from_addr FROM request AS t1, paritet as t2 WHERE t2.netAddr <> t1.to_relay & ((~(POW(2,32-t2.netMask)-1))&0xFFFFFFFF);

В итоге на выходе имею то что нужные записи но они повторяются столько раз - сколько записей в таблице паритетных сетей

Помогите разобраться плиз.
Заранее благодарен


Содержание

Сообщения в этом обсуждении
"Выборка из таблицы"
Отправлено Ghecko , 06-Сен-05 13:15 
SELECT distinct t1.from_addr FROM request AS t1, paritet as t2 WHERE t2.netAddr <> t1.to_relay & ((~(POW(2,32-t2.netMask)-1))&0xFFFFFFFF);


"Выборка из таблицы"
Отправлено Retif , 06-Сен-05 16:43 
>SELECT distinct t1.from_addr FROM request AS t1, paritet as t2 WHERE t2.netAddr <> t1.to_relay & ((~(POW(2,32-t2.netMask)-1))&0xFFFFFFFF);


Огромное спасибо