Всем привет, мне необходимо создать запрос который содержит в себе подзапрос с условием.
Мне нужно сделать так, что бы если это условие подзапроса не выполняется хотя бы для одной записи, то родительская запись так же не выбиралась из бд. Надеюсь понятно пояснил, фактически это выглядит так: из запроса мы выбираем Map<'record1', List<'record2'>>, если хотя бы один из record2 не выполняет условие член карты не должен быть выбран из бд.
Игорь Воротнёв, у таблицы Product есть несколько Opportunity, у Opportunity есть два поля: StartDate and EndDate, пользователь вводит на странице определенный временной промежуток, мне нужно отобразить только те продукты у которых не один из их дочерних Opportunity не входит в данный промежуток
sidor_tank, Опять же, неполные данные. Product has many Opportunities, а обратно? Тоже many, делая связь many-to-many? Или one, то есть связь one-to-many? Соответственно, дополнительные поля будут в таблице opportunities или в association / pivot? StartDate / EndDate - это поля какого типа? Используете ли вы какой-нибудь ORM на Java или вам нужен чистый SQL запрос а дальше разберетесь?
Исходя из предположения, что это one-to-many, а даты - date вам нужен обычный JOIN и сравнение дат:
SELECT *
FROM `products`
JOIN `opportunities`
ON `opportunities`.`product_id` = `products`.`id`
WHERE `start_date` > '2019-07-01'
AND `end_date` < '2019-08-01';