MySQL операции над множествами
Например:
36 79 98 35 46 87
56 89 34 67 68 32
….
и т.д.
Нужно определить какие наборы входят в заданное подмножество (заданное подмножество вводиться в клиентской программе).
Лучше все делать через запросы в базе данных или лучше получить из базы все наборы и уже в клиентской программе производить операции над множествами? Что будет продуктивнее? Если все делать в БД, то как запрос составить?
Не совсем понимаю, как это будет выглядеть...
Код:
SELECT * FROM TABLE WHERE (col1 BETWEEN 10 AND 20) AND (col2 BETWEEN 10 AND 20) AND (col3 BETWEEN 10 AND 20)...
Но както криво выглядит
Как именно задается подмножество, и как должно искаться пересечение?
например,
есть таблица наборов и чисел (tuplenum): id - ид. набора, num - число
есть таблица входного множества (inset): innum - число
строим view в виде пересечения этих таблиц (tupleset)
Код:
select id, num from tuplenum, inset where num = innum
строим view всех наборов с указанием кол-ва элементов в этом наборe (tuple1):
Код:
select id, count(num) as numcount1 from tuplenum group by id
строим view всех наборов с указанием кол-ва элементов в пересечении (tuple2):
Код:
select id, count(num) as numcount2 from tupleset group by id
Наконец можно выбрать:
Код:
select id from tuple1, tuple2 where tuple1.id = tuple2.id and tuple1.numcount1 = tuple2.numcount2
Всем спасибо за советы. Вопрос решился.