Ещё одна интересная задачка

12
A
На сайте с 19.07.2010
Offline
130
#11

если только средствами sql, то так:


select product_id, count(*) cc
from table

WHERE ( sort_id =5 AND value_id IN ( 1, 2, 3, 5, 7, 11, 10, 13, 15, 17, 20 ))
OR
( sort_id =3 AND value_id IN ( 1, 2, 3, 5, 7, 9, 15, 10 ))
OR
( sort_id =1 AND value_id IN ( 3, 4, 11, 14, 15, 13, 16, 2 ))

group by product_id
having cc = 3

upd: досмотрел, что у вас product_id и sort_id в паре не уникальны...

тогда такой финт ушами:


select product_id, count(*) cc
from
(
select product_id, sort_id
from table
WHERE ( sort_id =5 AND value_id IN ( 1, 2, 3, 5, 7, 11, 10, 13, 15, 17, 20 ))
OR
( sort_id =3 AND value_id IN ( 1, 2, 3, 5, 7, 9, 15, 10 ))
OR
( sort_id =1 AND value_id IN ( 3, 4, 11, 14, 15, 13, 16, 2 ))
group by product_id, sort_id
)

group by product_id
having cc = 3
.............
S5
На сайте с 04.01.2010
Offline
77
#12

admak, Спасибо, идея интересная, но в итоге count + having сворачивает базу в трубочку. И это при том, что база в данный момент наполнена на четверть. Видимо прийдется делать n-запросов и уже средствами php реализовывать

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий