添加产品属性

时间:2015-06-15 08:32:28

标签: mysql sql database left-join opencart

在产品目录中列出产品时,每个产品都有一些常规属性,如mrp,price,sku,产品描述等,适用于所有产品。

但是产品特定的属性很少,例如,T恤可以有颜色和尺寸,笔记本电脑有内存,分辨率,处理器速度,手机可以有内存,相机分辨率和操作系统。

示例中的每个上述属性都是特定于产品且非常重要的。

我认为,从opencart电子商务中获取一些提示,我通过一些更改(为了满足我的需要)复制了他们的数据库,现在就是这样。

产品

enter image description here

我们的想法是将产品信息/属性(适用于所有内容,如第一段所述)记录到产品表中的产品表中。

enter image description here

属性

enter image description here

然后是我们存储attributeName的属性表,例如分辨率,内存,颜色,大小,处理器速度等等。

enter image description here

Product_Attribute

enter image description here

这是我们将产品表的productId,属性表的attributeId和属性的值保存到attributeValue的表。 resolution = 15000pixels(attributeValue),memory = 500gb(attributeValue),color = blue(attributeValue)。

enter image description here

到目前为止,我们所有三个表都有记录,现在需要在产品详细信息页面上显示,有点像这样

enter image description here

Opencart,如果没有弄错,使用左连接语句来组合其product,attribute和product_attribute以在其产品详细信息页面上显示产品,这就是我需要做的。

如何使用左连接语句显示product,attribute和product_attribute以显示产品及其属性?请注意,可能有一些产品不需要额外的属性。

1 个答案:

答案 0 :(得分:0)

不幸的是,使用左连接进行完全递归是SQL不太擅长的事情之一。事实上,我很确定这是不可能的,至少在标准SQL中是这样。

一个不错的选择是通过将主“产品表”作为基类来使用简单继承,并扩展其他不同的表类型(例如“手机”或“T恤”)。在这种情况下,扩展可以通过使用不同的新表并且所有表都具有产品表的外键来轻松执行。

然后,如果您无法区分产品表中产品的类型,请添加“kind”或“type”属性,并在应用程序中根据需要执行基于该属性的左连接。