gpt4 book ai didi

mysql - 在 MySQL 中存储可变产品选项

转载 作者:行者123 更新时间:2023-11-29 14:09:38 27 4
gpt4 key购买 nike

我正在构建一个网站的一部分,其中产品可以有各种影响价格的选项。想想床上用品。有尺寸、是否需要床头板等选项。每个选项都会影响成本。然而,并非所有产品都有所有选项。

例如,带床头板的 90 厘米床与不带床头板的 120 厘米床的费用不同。

我处理过的产品选项可能只有一个选项(例如 T 恤尺寸或颜色),但没有像这样复杂的选项。在我的 MySQL 数据库中存储此类选项的最佳方式是什么?

最佳答案

这是我想到的设计,这是一个没有看到你的架构的假设。希望它能澄清我的评论。如果这与您的要求不同,请告诉我们。很高兴能帮助你。 :)

引用

* SQLFIDDLE

选项表:

ID  NAME              ATTRIBUTE     COST
1 headboard S 55.5
2 headboard L 65.2
3 headboard M 60.3
4 colour_change (null) 20.3
5 polishing (null) 70.2

产品表:

ID      NAME      PCOST
1001 chair 50
1002 bed1 1200
1003 table 200
1004 cupboard 2000
1005 bed2 1000

自定义表:

ID  PID     OID     CID
1 1002 3 (null)
2 1002 4 2
3 1003 5 (null)
4 1001 4 1
5 1004 5 (null)

查询 1 以获取用于每个产品定制的选项总数。

select c.pid, sum(o.cost)
from custom c
left join options o
on c.oid = o.id
group by c.pid
;

结果1:

PID     SUM(O.COST)
1001 20.3
1002 80.6
1003 70.2
1004 70.2

查询 2:按产品分割选项成本、产品成本

-- prod cost, option cost by options and prod
select x.pid, p.name, p.pcost, x.optCost,
x.optChoices
from prod p
right join (
select c.pid, sum(o.cost) as optCost,
group_concat(o.name, ' ') optChoices
from custom c
left join options o
on c.oid = o.id
group by c.pid) as x
on x.pid = p.id
;

结果2:

PID     NAME         PCOST  OPTCOST     OPTCHOICES
1001 chair 50 20.3 colour_change
1002 bed1 1200 80.6 headboard ,colour_change
1003 table 200 70.2 polishing
1004 cupboard 2000 70.2 polishing

查询 3:最终答案

-- total cost
select x.pid, p.name, x.optChoices,
(p.pcost + x.optCost) totalCost
from prod p
right join (
select c.pid, sum(o.cost) as optCost,
group_concat(o.name, ' ') optChoices
from custom c
left join options o
on c.oid = o.id
group by c.pid) as x
on x.pid = p.id
;

结果3:

PID     NAME       OPTCHOICES                   TOTALCOST
1001 chair colour_change 70.3
1002 bed1 headboard ,colour_change 1280.6
1003 table polishing 270.2
1004 cupboard polishing 2070.2

关于mysql - 在 MySQL 中存储可变产品选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13721539/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com