好吧,我知道标题听起来很混乱,但这里基本上是我有问题的地方,我有这个库存表,目前看起来像这样:

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
白,黑,蓝
如何为一条记录存储这些多个值?抱歉,如果这是模棱两可的…我尽量解释清楚。

最佳答案

很简单。
再加两张桌子。
一个叫尺寸,一个叫颜色。
桌子颜色:
彩色产品
桌子尺寸:
尺寸产品编号
那就很简单了

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

然后简单地遍历它。
就是这样做的。
如果你想增加复杂性,但可维护性,你做4个新表
颜色:颜色ID颜色名称颜色样本
大小:大小ID大小标签大小名称大小Alt
表产品颜色:
颜色标识产品标识数量
表产品尺寸:
尺寸和产品数量
那就很简单了
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提出的数量专栏

关于mysql - 在MySQL中的记录中存储1行的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12341962/

10-11 03:15