Mam cztery tabele rules, articles, categories_in_rules, articles_in_categories
rules
Tabela z regułkami (niewykorzystywana w zapytaniu, ale może ułatwić zrozumienie problemu)
column | type
rid | int
Tabela łącząca jedną regułkę z wieloma kategoriami (które zawiera)
categories_in_rules
column | type
rid | int
cid | int
Tabela z artykułami.
articles
column | type
aid | int
Tabela łącząca jeden artykuł z wieloma kategoriami (w których się znajduje).
articles_in_categories
column | type
aid | int
cid | int
Teraz tak: dostaję rid regułki i musze wyciągnąć artykuły, których wszystkie kategorie zawierają się w kategoriach regułki.
Jeżeli mam w articles_in_categories
aid | cid
1 | 1
1 | 2
1 | 3
1 | 4
2 | 1
2 | 2
(czyli dwa artykuły, które należą odpowiednio do kategorii 1-4 i 1-2)
oraz w tabeli categories_in_rules
rid | cid
1 | 1
1 | 2
1 | 3
(czyli jedną regułkę obejmującą kategorie 1-3)
To w wyniku zapytania powinienem otrzymać tylko drugi artykuł (pierwszy nie mieści się w regułce).