Select parent if all children meet criteria Select parent if all children meet criteria sql sql

Select parent if all children meet criteria


You can use NOT EXISTS

SELECT id FROM Parent pWHERE NOT EXISTS(   SELECT 1 FROM Child c   WHERE c.parent_Id = p.id   AND c.x <> c.y)

Edit: Here's the sql-fiddle: http://sqlfiddle.com/#!3/20128/1/0


Should join 2 tables first because the parents does not have children that will satisfy

And should add index for pa_id column

SELECT DISTINCT pa.id FROM pa INNER JOIN c ON c.pa_id = pa.id WHERE NOT EXISTS ( SELECT 1 FROM c WHERE c.parent_Id = p.id and c.x <> c.y )


This is what you need?

  select id from parent where id not in(    select parent_id from child     where x<>y    group by parent_id)