Есть такая схема:
articles (id, name)
tags (id, name)
article_tags (article_id, tag_id)
Для того чтобы выбрать articles, которые имеют хотябы 1 tag из перечиня (допустим с tag_id 1,2,3, 4)
я втупую делал 2 query: SELECT article_id WHERE tag_id in (1,2,3,4)
и потом тоже самое с article: SELECT * WHERE id in (1,2,3,4)
Ето вообщем правильно работало.
Но мне теперь еще нужно фильтр articles, что не имеют тега. Я пробывал также втупую делать (выбрал два масива article ids - то чно нужно и не нужно + array_differ и потом полные articles выбирал, но оно работает не правильно :( . Выбирает иногда то что не нужно.
Помогоите кто гуру SQL
UPDATE: все норм, я немного тупанул. Preapared statement для WHERE IN, не работает. Нужно сначало фильтрануть масив tag_id чемто типа
tag_ids = array_filter($tag_ids, 'ctype_digit');
и потом кидать сразу в SQL implode(',', $tag_ids);
и с етим лаже мой метод будет работать, хотя уже использую решенний ответ