trashcan
Новичок
Выборка нескольких строк как одну
Здравствуйте, видел когда-то на форуме похожую проблему, но, как ни старался, не смог сейчас найти ту тему. В общем, проблема такая:
Есть таблица следующего вида:
fields:
К примеру, нужно выбрать из этой таблицы такой product_id, для которого бы Товар=Омлет, а Цена=Бесплатно.
Однако тут мы сталкиваемся с неприятной особенностью таблицы. Раз наименование товара и цена содержатся в разных строках, то условие (field_name='Товар' AND field_value='Омлет') AND (field_name='Цена' AND field_value='Бесплатно') не даст вообще ничего, а если заменить средний AND на OR, то получим вообще все Омлеты и все товары с ценой Бесплатно.
В голову не пришло ничего, кроме такого варианта:
Однако, если характеристик не две, а допустим n (Цвет, Фасон, Размер, etc), то придется объединять n-подзапросов, что имхо не есть хорошо.
Подскажите, пожалуйста, есть ли другой вариант реализации такого запроса. Заранее благодарен.
Здравствуйте, видел когда-то на форуме похожую проблему, но, как ни старался, не смог сейчас найти ту тему. В общем, проблема такая:
Есть таблица следующего вида:
fields:
PHP:
field_id field_name field_value product_id
1 Товар Ботинки 1
2 Цена Мильон 1
3 Товар Омлет 2
4 Цена Два мильона 2
5 Товар Омлет 3
6 Цена Бесплатно 3
Однако тут мы сталкиваемся с неприятной особенностью таблицы. Раз наименование товара и цена содержатся в разных строках, то условие (field_name='Товар' AND field_value='Омлет') AND (field_name='Цена' AND field_value='Бесплатно') не даст вообще ничего, а если заменить средний AND на OR, то получим вообще все Омлеты и все товары с ценой Бесплатно.
В голову не пришло ничего, кроме такого варианта:
PHP:
SELECT tab1.product_id FROM (SELECT * FROM fields WHERE field_name='Товар' AND field_value='Омлет' ) as tab1, (SELECT * FROM fields WHERE field_name='Цена' AND field_value='Бесплатно' ) as tab2 WHERE tab1.product_id = tab2.product_id;
Подскажите, пожалуйста, есть ли другой вариант реализации такого запроса. Заранее благодарен.