SQL , .
:
SELECT ...
FROM Projects p
JOIN Categories c1 ON c1.project_id = p.id
JOIN Categories c3 ON c3.project_id = p.id
JOIN Categories c4 ON c4.project_id = p.id
WHERE (c1.id, c3.id, c4.id) = (1, 3, 4);
. . :
WHERE c1.id = 1 AND c3.id = 3 AND c4.id = 4;
, , . , Categories.(project_id,id) , , , SQL EXPLAIN.
, , , . ..
Group-:
SELECT ...
FROM Projects p
JOIN Categories cc ON c.project_id = p.id
WHERE c.id IN (1, 3, 4)
GROUP BY p.id
HAVING COUNT(*) = 3;
MySQL (, ), GROUP BY , .
, SQL- API Rails ActiveRecord.