условия (где) MySQL - PullRequest
       14

условия (где) MySQL

0 голосов
/ 15 июля 2011

Таблица продуктов:

id|name
-------
1 |computer
2 |microwave
3 |transl

Таблица product_features:

feature          | id_product | feature_value
------------------------------------
count_of_buttons | 1          | 1
count_of_buttons | 2          | 2
count_of_buttons | 3          | 1
color            | 1          | white
color            | 2          | white
color            | 3          | black

Просьба, как получить все белые продукты одной кнопкой? Большое спасибо!

Ответы [ 4 ]

4 голосов
/ 15 июля 2011
select product.*

from product
  join product_features as buttons
    on buttons.id_product = product.id
  join product_features as color
    on color.id_product = product.id

where buttons.feature_value = '1'
  and buttons.feature = 'count_of_buttons'

  and color.feature_value = 'white'
  and color.feature = 'color';
1 голос
/ 15 июля 2011
select
    p.id
    p.name
from
    products p
    join (select * from product_features where feature = 'color') colors on (p.id=colors.id_product)
    join (select * from product_features where feature = 'count_of_buttons') buttons on (p.id=buttons.id_product)
where
    colors.feature_value = 'white'
    and buttons.feature_value = 1

Вы можете подумать о реорганизации таблицы product_features, чтобы у вас был отдельный столбец для каждой функции (то есть столбец color и столбец count_of_buttons), чтобы у вас была одна строка для каждого продукта. На самом деле все это может быть в таблице продуктов.

0 голосов
/ 15 июля 2011
select p.id, p.name from products p inner join product_features ON p.id=id_product where feature_value='white' and feature='color' and count_of_buttons=1
0 голосов
/ 15 июля 2011

ВЫБРАТЬ p.id ИЗ продуктов р ПРИСОЕДИНИТЬСЯ к product_features pf ON p.id = pf.id ГДЕ pf.feature_value = 'white' И pf.count_of_buttons = 1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...