@Snewer

Как хранить значения цен товаров в MySQL?

Здравствуйте!

В магазине имеется фиксированное кол-во товаров (порядка 200) и категорий (около 20). Пользователь может выставлять прайс лист на данные товары (т. е. каждый пользователь имеет свой прайс лист). При чем пользователь может выставлять цены не ко всем товарам, т. е. к примеру, для 1, 50, 80, 81.

Как организовать структуру таблицы? Выборка может быть следующая:
1. По id пользователя
2. "where value1 > 0 or value2 > 0 ...", где value1 и value2 - товар1 и товар2 соответственно

Как вариант таблица с 202 полями. Насколько это правильно?

Спасибо.
  • Вопрос задан
  • 2937 просмотров
Решения вопроса 2
@neol
ИМХО правильнее будет как-то так:
CREATE TABLE `prices` (
  `user_id` int(10) unsigned NOT NULL,
  `goods_id` int(10) unsigned NOT NULL,
  `price` int(10) unsigned NOT NULL
);

Ну и индексы добавить.
Соответственно ваш запрос будет выглядеть примерно так:
SELECT * FROM prices WHERE goods_id IN (value1,value2) AND price > 0


Таблица с 202 полями - точно плохое решение (=
Ответ написан
@vdem
CREATE TABLE `User` (
    `user_id` int not null,
    ...
);
CREATE TABLE `Product` (
    `product_id` int not null,
    `product_name` varchar(100),
    ...
);
CREATE TABLE `UserPrice` (
    `user_price_id` int not null,
    `user_id` int not null,
    `product_id` int not null,
    `price` decimal(10, 2) not null,
    ...
);

Чтобы получить все товары, которые продает User с id = 10:
SELECT `Product`.*, `UserPrice`.`price`
FROM `UserPrice`
INNER JOIN `Product` ON `Product`.`product_id` = `UserPrice`.`product_id`
WHERE `user_id` = 10

Две таблицы (ну таблица с пользователями и так есть, верно?), и никаких сотен полей.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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