Задавайте вопросы, мы ответим
Вы не зашли.
Вопрос в продолжение этой темы http://sqlinfo.ru/forum/viewtopic.php?id=162.
Есть товары, есть категории товаров (разделы).
Один товар может находиться в нескольких разделах. Соответственно есть третья табличка, связывающая товары и категории.
Очень хочется выставлять приоритеты товарам (т.е. кто за кем следует). Причем для каждого раздела хочется задавать свои приоритеты. Т.е. в одном разделе товар может идти первым, в другом пятым и т.д.
Реализация, которая приходит в голову, это создать еще одну таблицу с полями id_категории, id_товара, приоритет.
И запрос будет что-то типа
SELECT ... FROM `products` as prod, `prioritets` as prior WHERE .... AND prior.id_категории = номер_категории AND prior.id_товара = prod.id ORDER by prior.приоритет
Вопрос, насколько это будет тормозить запрос? Нормальная ли это реализация? Стоит ли так делать, или может как-то по-другому?
Неактивен
Добавьте поле приоритет в существующую таблицу связей товар-категория.
Зачем делать еще одну?
Реализация нормальная
Неактивен
Отлично! Спасибо за подсказку!
Неактивен
Только единственное,
вы писали, что лучше делать так
SELECT * FROM product WHERE id IN ( SELECT id FROM products WHERE vozrast=4 ORDER BY X LIMIT Y,Z)
Соответственно выбор айдишников идет первым запросом, в котором неплохо было бы выбрать и приоритеты.
Как быть в этом случае?
Неактивен
IN + LIMIT работать не будут. Делайте объединением.
SELECT ... FROM product JOIN products USING (id) WHERE ... ORDER BY ... LIMIT ...;
Неактивен