INSERT INTO A VALUES (1,2), (2,3); INSERT INTO B VALUES (1,1), (2,3); INSERT INTO C VALUES (1,2,1,1), (1,2,2,2), (2,3,1,1), (1,2,4,5); SELECT a.F1, a.F2 FROM a,b,c WHERE a.F1 = c.F1 AND a.F2 = c.F2 AND b.F3 = c.F3 AND b.F4 = c.F4 GROUP BY a.F1, a.F2 HAVING COUNT (a.F1) = (SELECT COUNT(F3) FROM b); SELECT F1, F2 FROM C WHERE F3 IN (SELECT F3 FROM B) AND F4 IN (SELECT F4 FROM B) GROUP BY F1, F2 HAVING COUNT(*) = ( SELECT COUNT(*) FROM b );