Я боролся с заголовком, но позвольте мне объяснить:
Допустим, у меня есть две структуры данных: Parent
и Child
. В моем (Scala) коде каждый экземпляр Parent
имеет список Child
. В базе данных у меня есть две таблицы, одна для Parent
и одна для Child
. Каждая запись в таблице Child
имеет значение parentId
, указывающее на ее Parent
.
Таблица для Parent
: id int
Таблица для Child
: id int, parentId int (внешний ключ parent.id)
Имея список Child
идентификаторов, я хочу выбрать каждый Parent
(которых может быть ни один, один или несколько), у которого есть все эти дочерние элементы. Может ли кто-нибудь помочь мне с запросом?
ОБНОВИТЬ:
Мой пример не охватывает мой вариант использования - извините. Мне нужно добавить еще одно поле в Child
: назовем его interestingThing
. Вот таблицы:
CREATE TABLE Parent (
id INT PRIMARY KEY
);
CREATE TABLE Child (
id INT PRIMARY KEY,
interestingThing INT,
parentId INT,
FOREIGN KEY (parentId) REFERENCES Parent (id)
);
Что мне нужно, так это найти родителей, у которых есть дети, с моим списком интересных вещей. Учитывая эти данные:
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);
Мне нужен запрос, который заставляет эти примеры работать:
- Учитывая интересные вещи (42, 43), я хотел бы найти родителя с id 1.
- Учитывая интересные вещи (43, 44), я хотел бы найти родителя с id 1.
- Учитывая интересные вещи (8), я хотел бы найти родителя с идентификатором 1 и родителя с идентификатором 2.
- Учитывая интересности (8, 10), хотелось бы найти родителя с id 2.