タグとかを使って、タグA B Cを含むけどD E Fを含まない、みたいなのをデータベースレベルで実装しようと思ったのでちょっと四苦八苦。概要としてはこんな感じでできたっぽい:



SELECT id FROM ... WHERE <A> INTERSECT
SELECT id FROM ... WHERE <B> INTERSECT
SELECT id FROM ... WHERE <C> EXCEPT
SELECT id FROM ... WHERE <D> EXCEPT
SELECT id FROM ... WHERE <E> EXCEPT
SELECT id FROM ... WHERE <F>

ただ、これって全文検索できればもっと簡単にできるよね。tag カラムに入れておいてA B C -D -E -Fみたいな感じで一発でできるわな。