1

好的,我知道标题听起来令人困惑,但这基本上是我遇到的问题,我的库存表目前看起来像这样:

CREATE TABLE inventory (
productid MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT,
category VARCHAR(100) NOT NULL,
subcategory VARCHAR(100) NOT NULL,
productname VARCHAR(150) NOT NULL,
description TEXT NOT NULL,
price DECIMAL(4,2) NOT NULL,
pathtoimage VARCHAR(150),
amountinstock SMALLINT UNSIGNED NOT NULL,
PRIMARY KEY (productid)
);

我正在构建的应用程序有两个附加字段,即“尺寸”和“颜色”。这将是一个基本上网站管理员将填写并能够添加新库存的表格。我需要它,以便他们可以为同一产品输入多种尺寸和颜色。例如:

S、M、L、XL

白色、黑色、蓝色

如何为一条记录存储这些多个值?对不起,如果这是模棱两可的......我正在尽我所能解释它。

4

2 回答 2

2

这很简单。

再添加两个表。一种叫做尺寸,一种叫做颜色。

表格颜色: 颜色 Product_id

表尺寸:尺寸 Product_id

那么这是一个简单的问题

SELECT `color` FROM `colours` WHERE `product_id`='myproductid';
SELECT `Size` FROM `sizes` WHERE `product_id`='myproductid';

然后简单地遍历它。

这就是这样做的方法。

如果您希望增加复杂性但可维护性,您可以制作 4 个新表

颜色: Color_ID Color_name Color_sample

尺寸: Size_ID Size_label Size_name Size_alt

表 prod_colors:Color_ID Product_id 数量

表 prod_sizes:Size_ID Product_id 数量

那么这是一个简单的问题

SELECT * FROM `prod_colors` 
    JOIN `Colours` on `Colours`.`Color_id` = `prod_colors`.`Color_id`
WHERE `product_id`='myproductid' AND `qty` > '0';

SELECT `Size` FROM `sizes` 
    JOIN `Sizes` on `Sizes`.`Size_ID` = `prod_sizes`.`Size_ID`
WHERE `product_id`='myproductid' AND `qty` > '0';
  • 编辑感谢 kolossus 建议数量列
于 2012-09-09T18:57:08.890 回答
0

您可以将它们作为逗号分隔的字符串存储在单个列中

于 2012-09-09T18:56:45.940 回答