在MySQL中的记录中存储1行的多个值

时间:2012-09-09 18:52:52

标签: mysql database database-design

好的,我知道这个标题听起来很混乱,但这里基本上我遇到了麻烦,我现在有一个这样的库存表:

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

白色,黑色,蓝色

如何为一条记录存储这些多个值?对不起,如果这是不明确的......我试图尽可能地解释它。

2 个答案:

答案 0 :(得分:2)

这很简单。

再添加两个表格。 一种称为尺寸,一种称为颜色。

表颜色: Color 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数量

table 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建议量化列

答案 1 :(得分:0)

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