I have these four tables: feeds, feed_entries, entries_categorias and categorias. Whith these structures:
CREATE TABLE `categorias` (
`id` int(11) NOT NULL aut
Try something like this:
SELECT *
FROM `feed_entries`
WHERE id IN (
SELECT e.id
FROM `feed_entries` AS `e`
INNER JOIN `feeds` AS `f` ON e.feed_id =f.id
INNER JOIN `entries_categorias` AS `ec`
ON ec.entry_id =e.id INNER JOIN `categorias` AS `c`
ON ec.categoria_id =c.id
WHERE c.nome IN ('Google','Apple')
AND (e.deleted =0)
GROUP BY e.id
HAVING COUNT(DISTINCT ec.id) = 2
)
Change your WHERE clause to use an IN operator:
SELECT `e`.*
FROM `feed_entries` AS `e`
INNER JOIN `feeds` AS `f` ON e.feed_id =f.id
INNER JOIN `entries_categorias` AS `ec` ON ec.entry_id =e.id
INNER JOIN `categorias` AS `c` ON ec.categoria_id =c.id
WHERE (c.nome IN (<List of categories separated by commas>) AND (e.deleted =0)
ORDER BY `e`.`date` DESC