Как хранить список зказанных товаров?

Вот допустим пользователь сделал заказ и в таблице "orders" есть
-ид заказа
-сумма заказа
-дата заказа
И т.д.

Вот был бы один товар то хранили бы его ид.
Но вот как поступить если в заказе несколько товаров? И что делать если одного товара заказали 2 шт или более? Как это правильно организовать?
  • Вопрос задан
  • 125 просмотров
Решения вопроса 2
Maksclub
@Maksclub
maksfedorov.ru
Создается таблица purchases (покупки) с полями:
  • order_id — несколько записей выбираеются по этому полю, и у вас будет актуальное количество и значения товаров
  • amount — количество товара в заказе
  • product_id — привязка к товару, например получить его фото, но оно не обязательное, тк из основной таблицы может исчезнуть товар (сняли, удалили, распродали, мало ли что...), потому нужо завести поля name, price, sku, offer (или variant) и прочее

Готовый пример (product_id пустой, тк нет товара, но в истории заказа всегда есть инфа):
5a91daa9ba0d0598154064.png
Ответ написан
Комментировать
@Azperin
Дилетант
Дак так и организовывай. Первое что пришло, таблицы:
orders: order_id, user_id, order_status, order_date
order_items: order_id, item_id, item_quantity (первичный ключ по ордер_ид + товар_ид)
Тоесть таблица ордер выступает просто как корзина, если статус заказа не равно например "оплачен", то юзер работает и дальше с этим ордером, может добавлять или удалять товар.
SELECT `users`.`user_id`,  `orders`.`order_id`,  `order_items`.`item_id`,  `order_items`.`item_quantity`
LEFT JOIN `orders` ON (`orders`. `user_id` = `users`.`user_id` AND `orders`.`order_status` = "Не оплачен" ) 
LEFT JOIN `order_items` ON (`order_items`.`order_id` = `orders`.`order_id`)
FROM `users` WHERE `users`= 5;

Ну и цены также можно либо джоином из отдельной таблицы по итем_ид брать, либо сразу в заказ записывать с учетом скидок, чтоб по 10 раз не пересчитывать.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы