Выборка из таблицы БД со связью 1 ко многим

Есть таблица products и таблица assortiment, они связаны "1 ко многим", т.е. каждой записи таблицы products соответствует 1 или несколько записей из таблицы assortiment.

assortiment - это различные вариации одного товара (например цвета, размеры и т.п.).

У products есть поле id, а у assortiment есть поля id, product_id и sklak. По product_id ассортимент связывается с товаром, а sklad - это остаток товаров такого типа (цвета, размера и т.п.) на складе.

Задача сделать выборку из таблицы products, но только тех записей, для которых хотя бы 1 ассортимент имеет не нулевое значение поля sklad.

Вопрос, каким образом построить условие для запроса SELECT ?

Хотя бы наведите на мысль или задайте наводящие вопросы, я постараюсь конкретизировать свой вопрос ;)


Ответы (2 шт):

Автор решения: Ziker

Попробуй так (поле 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
→ Ссылка
Автор решения: Akina
SELECT DISTINCT products.*
FROM products
JOIN assortiment on products.id = assortiment.products_id
WHERE assortiment.sklad

Будут выведены все products, которым соответствует хотя бы одна запись в assortiment, имеющая assortiment.sklad не ноль и не NULL.

→ Ссылка