I struggled with the title, but let me explain:
Let's say I have two data structures: Parent
and Child
. In my (Scala) code, each Parent
instance has a list of Child
's. In the database I have two tables, one for Parent
and one for Child
. Each entry in the Child
table has a value parentId
that points to its Parent
.
Table for Parent
: id int
Table for Child
: id int, parentId int (foreign key parent.id)
Given a list of Child
IDs, I want to select each Parent
(of which there can be none, one or many) that has all these children. Can someone help me out with the query?
UPDATE:
My example didn't cover my use case - sorry. I need to add another field in Child
: Let's call it interestingThing
. Here are the tables:
CREATE TABLE Parent (
id INT PRIMARY KEY
);
CREATE TABLE Child (
id INT PRIMARY KEY,
interestingThing INT,
parentId INT,
FOREIGN KEY (parentId) REFERENCES Parent (id)
);
What I need is to find parents that has children with my list of interesting things. Given this data:
INSERT INTO Parent VALUES (1);
INSERT INTO Parent VALUES (2);
INSERT INTO Child VALUES (1, 42, 1);
INSERT INTO Child VALUES (2, 43, 1);
INSERT INTO Child VALUES (3, 44, 1);
INSERT INTO Child VALUES (4, 8, 2);
INSERT INTO Child VALUES (5, 9, 2);
INSERT INTO Child VALUES (6, 10, 2);
INSERT INTO Child VALUES (7, 8, 1);
I want a query that gets these examples working:
- Given the interesting things (42, 43), I would like to find the parent with id 1.
- Given the interesting things (43, 44), I would like to find the parent with id 1.
- Given the interesting things (8), I would like to find the parent with id 1 and the parent with id 2.
- Given the interesting things (8, 10), I would like to find the parent with id 2.