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)
);

私が構築しているアプリには、「サイズ」と「色」という 2 つの追加フィールドがあります。基本的にウェブサイトの管理者が記入し、新しい在庫を追加できるフォームになります。同じ製品に複数のサイズと色を入れることができるようにする必要があります. 例えば:

S、M、L、XL

ホワイト、ブラック、ブルー

これらの複数の値を 1 つのレコードに保存するにはどうすればよいですか? あいまいな場合は申し訳ありません...できる限り説明しようとしています。

4

2 に答える 2

2

それは簡単です。

さらに 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 数量

テーブル prod_sizes: Size_ID Product_id qty

それなら簡単な問題です

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 に答える