Общие > Базы данных

Исключение выборки из двух таблиц

(1/3) > >>

Phoinix:
Есть 2 таблицы:
1. Таблица, в которой одним из полей является число
2. Таблица, в которой 2 поля: минимальное число, максимальное число.

Вторая таблица - список диапазонов чисел для первой таблицы.

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

При попытке запустить запрос:

SELECT t3.param1, count(t3.param1)
FROM table1 AS t1, table2 AS t2, table1 AS t3
WHERE t1.num >= t2.start_num AND
t1.num t2.end_num
GROUP BY t1.num

Ничего не выдает...

Макс:
могу предложить такой вариант
1. SELECT COUNT(*) FROM table2;
получим кол-во записей во второй таблице ($counts)

2.
--- Код: ---
SELECT t1.id, t1.num, COUNT(t1.id) as counts
FROM table1 t1,  table2 t2
WHERE t1.num NOT BETWEEN t2.min AND t2.max
GROUP BY t1.id
HAVING counts = $counts;
--- Конец кода ---

Phoinix:
Макс
Нет... немного не так...

Есть таблица логов:
id | remote host | ...

Есть таблица диапазонов:

remote_host_min | remote_host_max | ...

Нужно сделать выборку всех записей из таблицы логов remote_host которых не соответствует ни одному из диапазонов второй таблицы

Выбрать все которые попадают - просто, а вот наоборот - неполучается

Макс:
а мой метод что возвращает ?

Phoinix:
Макс

--- Цитировать ---SELECT t1.id, t1.num, COUNT(t1.id) as counts
FROM table1 t1,  table2 t2
WHERE t1.num NOT BETWEEN t2.min AND t2.max
GROUP BY t1.id
HAVING counts = $counts;
--- Конец цитаты ---


Формирует список в 20 раз больше исходного... :(

Только GROUP BY не по id а по num

Даже если точнее: количество записей есть произведение количества записей первой таблицы и количества записей второй таблицы...

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 
Перейти к полной версии