首页 文章

具有按父项分组的变体的产品

提问于
浏览
0

好吧,试图让我的 Headers 尽可能具有描述性 .

我正在开发具有变体(儿童)产品的电子商务 .

产品的每个变体都是产品本身,其中“parent_id”行指向主要产品 . (如果存在,则为子节点,如果为null,则为主节点) .


产品结构:

product_id | parent_id |名字|价格| [...]

products_variants结构:

product_id | property |值


每个变体都可以是一组属性和值 . 例:

产品介绍:

product_id:1 | parent_id:null |名称:“白色T恤”|价格:100 product_id:2 | parent_id:1 |名称:“白色T恤”|价格:100 product_id:3 | parent_id:1 |名称:“蓝色T恤”|价格:100 product_id:4 | parent_id:1 |名称:“蓝色T恤”|价格:100

(请注意,有两个“蓝色T恤” . 让我们来看看他们的变种)

Products_variants:

product_id:1 | property :“颜色”|值:“white”product_id:1 | properties :“大小”|值:“L”product_id:2 | property :“颜色”|值:“white”product_id:2 | properties :“大小”|值:“XL”product_id:3 | property :“颜色”|值:“blue”product_id:3 | properties :“大小”|值:“L”product_id:4 | property :“颜色”|值:“blue”product_id:4 | properties :“大小”| Value :“XL”


太多的介绍,现在是我的问题(如果你还在读这个,你真棒) .

我目前按类别,价格,变体(如每个电子商务)进行过滤 . 但是,因为如果我正在使用HAVING寻找颜色“蓝色”,那么可能会有多个变体 .

(SELECT value FROM products_variants WHERE property = color and value = blue)as color HAVING color IS NOT NULL

问题是我想要只显示父母 . 如果你寻找“蓝色衬衫”,好的......这是原来的“白衬衫”,有蓝色,红色,黄色等 .


另一种选择是显示所有变体,它们的颜色很好,甚至更有意义 . (你寻找“蓝色”,然后你只得到“蓝色”) .

但请记住我有SIZES,所以如果你寻找“蓝色衬衫”,你会看到我在数据库中的每个尺寸都有一个“蓝色衬衫” . 这太可怕了 .


现在......为了使它更复杂,可能......

蓝色衬衫|尺寸:L |袖子:短|颜色:蓝色蓝色衬衫|尺寸:L |袖子:长|颜色:蓝色蓝色衬衫|尺寸:XL |袖子:短|颜色:蓝色蓝色衬衫|尺寸:XL |袖子:长|颜色蓝色

如果我寻找“颜色蓝”应该给我带来两个结果 . 蓝色长袖和蓝色短袖(无论大小) .

但如果我尝试按属性进行分组,如果值是“大小”,我会得到两件衬衫,其中袖子被错误地分组 .

例:

希望你能理解 . 我愿意接受问题 .

1 回答

  • 0

    谢谢你的详细信息我看到一切都很好 . 基于我对你的问题的不满,我写在下面 .

    要获得主要产品,您可以尝试以下伪用例,“作为用户,我只想查看蓝色产品”

    • 转到“Products_variants”表并列出“property:'color'| value:'blue'”的所有“product_id” .

    • 保持返回的Object / Array在运行时内存中 .

    • 现在转到“产品”表并返回从#2返回的“product_id”的“parent_id” . 这将返回主要产品 .

相关问题