У меня эти 3 таблицы в моей БД: product (id, sku, type, price)
, product_relation (parent_id, child_id)
и product_stock (product_id, quantity, in_stock)
. Возможны отношения между продуктами: Продукт типа X может быть родителем (может состоять из) для нескольких продуктов типа Y (отношение хранится в таблице product_relation
). В DB-продуктах типа X всегда есть количество, равное 0. Теперь вот что. Мне нужно получить только продукты (sku
и id
) типа X, которые есть в наличии (in_stock = true
), и хотя бы один из их детей имеет quantity > 0
или in_stock = true
.правильное использование подзапросов с mysql
Я застрял на этом несколько часов. Я не могу сделать хороший запрос для этого. Наиболее близким я достиг
SELECT a.`id`, a.`sku` FROM `product` AS a
INNER JOIN `product_stock` AS b
ON a.`id` = b.`product_id`
INNER JOIN `product_relation` AS c
ON c.`child_id` = b.`product_id`
WHERE b.`in_stock` = 1 AND a.`type` = 'X'
но это не хорошо, потому что многие предметы отсутствуют. Я не знаю, может ли это быть обработкой только с помощью соединений или подзапросов Помогите пожалуйста.