@victorib_us

Как составить sql запрос?

Есть таблица с товарами "products", пускай будет два поля: id и name.
Еще есть две таблицы: "characteristics_value" с полями id и value, и "char_product" (для связи товаров с характеристиками) с полями id_product и id_characteristic нужно написать запрос который покажет товары с определенными характеристиками, например:
Есть 4 товара "products"
id - name
1 - iphone
2 - samsung
3 - nokia
4 - motorola
У них есть характеристики "characteristics_value"
id - value
1 - белый
2 - черный
3 - 64 гб
4 - 32 гб
Связи с товарами "char_product"
id_product - id_characteristic
1 - 1
2 - 1
3 - 1
4 - 2
1 - 3
2 - 3
3 - 4
То есть получается есть iphone c характеристиками "белый","64 гб", samsung "белый","64 гб", nokia "белый","32 гб" и motorola "черный"

Когда выбираем фильтр "белый" должно показать 3 телефона: iphone,samsung и nokia. Потом если добавить фильтр 64 гб, должно оставить только iphone и samsung. Какой должен быть sql запрос чтобы показать нужные товары при выбранных фильтрах ? Я понимаю что возможно не совсем удачная архитектура БД для таких действий, но увы, что есть...
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ответы на вопрос 1
Stalker_RED
@Stalker_RED
Например так:
SELECT product.id, product.name, characteristic.id, characteristic.value
FROM product_characteristic_link
LEFT JOIN product ON product_characteristic_link.product_id = product.id
LEFT JOIN characteristic ON product_characteristic_link.characteristic_id = characteristic.id
WHERE characteristic.value = 'white'
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы