Предоставлен Parent
с полем id
и Child
с parent_id
и name
. Как бы выглядел запрос, чтобы получить все Parents
, у которых есть двое детей, одно с именем "Джон" и одно с именем "Майк". Моя проблема заключается в том, что я не могу создать запрос, который возвращает родителей, имеющих обоих детей. Я использовал Where IN ('John', 'Mike')
, чтобы получить возвращаемые родителями, у которых также есть один ребенок с именем "Джон" или "Майк". Но я хочу только родителей с обоими детьми.
SELECT * FROM Parent
JOIN Child ON Child.parent_id = Parent.id
WHERE Child.name IN ('John', 'Mike')
Мой вопрос, конечно, более сложный, и это только абстракция для того, чего я хочу достичь. Я имею в виду, что мне сначала нужно присоединиться к дочерним элементам parent_id и сделать что-то с этим, но не знаю.
Вы можете сделать два соединения и искать свои записи. Этот пример показывает, что родительский 1 вернется с обоими kiddos, но не с родителем 2, у которого есть только Mike.
Попробуйте выполнить два шага в предложении where. Оба условия должны быть верны, чтобы вернуть родительскую запись.
что-то вроде этого будет работать в postgres, если у вас есть.
Итак, добавлено решение с двойным соединением в запрос Ecto и оно прошло мои тесты:)
Спасибо за идеи и быструю помощь:)