Выборка из таблицы БД со связью 1 ко многим
Есть таблица products и таблица assortiment, они связаны "1 ко многим", т.е. каждой записи таблицы products соответствует 1 или несколько записей из таблицы assortiment.
assortiment - это различные вариации одного товара (например цвета, размеры и т.п.).
У products есть поле id, а у assortiment есть поля id, product_id и sklak. По product_id ассортимент связывается с товаром, а sklad - это остаток товаров такого типа (цвета, размера и т.п.) на складе.
Задача сделать выборку из таблицы products, но только тех записей, для которых хотя бы 1 ассортимент имеет не нулевое значение поля sklad.
Вопрос, каким образом построить условие для запроса SELECT ?
Хотя бы наведите на мысль или задайте наводящие вопросы, я постараюсь конкретизировать свой вопрос ;)
Ответы (2 шт):
Попробуй так (поле product_id под свои ключи переименуй):
SELECT p.*
FROM products p
И далее либо
INNER JOIN assoriments a ON a.prodict_id = p.product_id
WHERE sklad > 0
Либо
INNER JOIN assoriments a ON a.prodict_id = p.product_id AND a.sklad > 0
WHERE a.id IS NOT NULL
SELECT DISTINCT products.*
FROM products
JOIN assortiment on products.id = assortiment.products_id
WHERE assortiment.sklad
Будут выведены все products, которым соответствует хотя бы одна запись в assortiment, имеющая assortiment.sklad не ноль и не NULL.