Strange, that usage of category__and
should be working.
As for following logic I don’t think you can accomplish anything that complex with query parameters. There are several possible ways to deal with it that I can think of:
- simplify category structure and/or selection logic;
- modify raw SQL with
posts_where
filter; - store selection criteria in post meta.