Say I have 2 tables, called parent and child. A parent can have zero to many children, and a child can have 1 to many parents. How do I find all the parent elements that are parents of two specific children.
For instance, say I have Parents [p_a, p_b, p_c, p_d], and children: [c_a, c_b] They have a structure as follows:
- p_a has c_a as a child
- p_b has c_b as a child
- p_c has both c_a and c_b as children
- p_d has no children
How do I formulate a query to select p_c?
If they had a structure where p has [id, name] and c has [id, name] and there is a join_table with [parent_id, child_id]. (I have also given them sequential id's for this example to make things easier).
My attempt to solve it came up with the following SQL
SELECT p.*
FROM parent AS p
JOIN join_table AS j ON p.id = j.parent_id
JOIN children AS c ON j.child_id = c.id
WHERE c = 1
OR c = 2
But obviously this selects p_a and p_b as well as p_c. I've been looking at the UNION operator but can't seem to get it working.
Looking forward to your answers, thanks for reading. mike
EDIT: mentioned the id convention I'm using for the example