Journal    Friends    Archive    User Info    memories
 

St. Hell -


24 Ноя, 2008 23:39

Наверное, у меня сломались мозги. Попытаюсь сформировать задачу:
Есть таблица с полями x и y. Есть массив из n пунктов. Для одного x может быть много y. Надо получить все x для которых выполняется условие, что все элементы массива совпадают с y. Если бы для каждого x была отдельная таблица, то задача решалась бы элементарно (но не слишком оптимально для базы данных, поскольку было бы много join).
На ум приходит два решения:
1. SELECT x, count(*) as c FROM table WHERE y IN array GROUP BY x;
if(c==n) res[]=x;
Здесь понятно, c не может быть больше n, а если меньше - то выполняются не все условия.

2. создать в базе процедуру, которая, в общем-то будет делать тоже самое, но уже на своем уровне, так что решение на самом деле одно.

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

Оставить комментарийPrevious Entry Add to Memories Tell A Friend Track New Comments Next Entry

Comments:

От:[info]4aduh
Дата:Август, 25, 2009 22:35 (UTC)
(ссылка)
По-моему ты сломал мозги и остальным 8)