|
|
|
Вопрос по нестандартной выборке
|
|||
|---|---|---|---|
|
#18+
Всем привет У меня есть таблица товаров item с ключом itemid Есть таблица свойств товара property с ключом propertyid И есть связующая таблица item_property с полями itemid,propertyid,value, где value - значение данного свойства для данного товара. У разных категорий товаров может быть разное количество свойств (например, у колец это тип металла и диаметр кольца, а у камней это вес в каратах) Когда посетитель смотрит определённую категорию товаров, у него появляется фильтр по свойствам товаров этой категории (например, если он смотрит кольца, у него появляется фильтр типов металла и диаметров) И мне нужно сделать запрос, реализующий эти фильтры. Например, выбрать все кольца у которых тип металла "Золото" и диаметр "10". Я сделал SELECT * FROM item i LEFT JOIN item_property p ON i.itemid=p.itemid ... А вот дальше не знаю что писать - ведь пользователь может указать несколько свойств одновременно и нужно как то проверить, чтобы в связующей таблице были все указанные свойства и чтобы они были равны указанным. Что тут можно сделать? Или мне переделывать всю структуру хранения свойств чтобы было попроще их получать? У меня пока в голове только джойнить каждое свойство отдельно и проверять (т.е. если 3 свойства, то 3 раза джойнить item_property), но это как то тяжело для базы будет, наверное. Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.04.2016, 14:23 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=39214916&tid=1831913]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
171ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 233ms |
| total: | 471ms |

| 0 / 0 |
