我一直绞尽脑汁想要弄清楚如何通过外键完成链接,以帮助简化生活。我有两个表设置,并希望第三个链接到他们都添加几个列到第三个。这是我想出的语法......
衬衫
CREATE TABLE shirts(
shirt_id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
shirt_name VARCHAR(100) NOT NULL,
shirt_type VARCHAR(10) NOT NULL,
shirt_size VARCHAR(20) NOT NULL,
qp_price_id VARCHAR(20) NOT NULL,
o_price_id VARCHAR(20) NOT NULL
)ENGINE=INNODB;
V-Necks,Raglan Sleeve,Cap Sleeve等衬衫会更多......
价目表
CREATE TABLE price_list(
price_id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
price_cat VARCHAR(20) NOT NULL,
price NUMERIC(6,2) NOT NULL
)ENGINE=INNODB
我想要做的是创建一个第3个表,从衬衫表中选择shirt_name,shirt_type和shirt_size列,然后创建两列,一个是qp_price,另一个是O_price,并将这些外键放到价目表中桌子来抢这件衬衫的价格...而且我想可能会以某种方式使用WHERE子句显示的价格由
控制WHERE shirts.qp_price_id=price_list.price_cat AND shirts.o_price_id=price_list.price_cat
我想这样做,所以我可以尽可能轻松地将价格变更为多件商品。这个块子只适用于我需要代表的每种各样的圆领衬衫......还有更多...所有的圆领衬衫都花费了相同的价格来自New Born-1X成人,所以我有那些归因于“crn-qp-a”和“crn-oa”所以如果我可以改变“crn-qp-a”ONE TIME的价格值并让它自动更新到20个实例,那么我不需要做20次....这样做有意义吗?....请帮忙......哈哈
答案 0 :(得分:1)
首先,您要从shirts
表格中移除价格信息并保留price_list
,然后创建第三个表格,然后您可以在{{1}之前将衬衫链接到价格}和shirt_id
price_id
例如,如果您的create table shirt_price (
shirt_id int UNSIGNED not null,
qp_price_id int UNSIGNED not null,
o_price_id int UNSIGNED not null,
primary key (shirt_id, price_id),
CONSTRAINT shirt_price_ibfk_1 FOREIGN KEY (shirt_id) REFERENCES shirts (shirt_id),
CONSTRAINT shirt_price_ibfk_2 FOREIGN KEY (qp_price_id) REFERENCES price_list (price_id),
CONSTRAINT shirt_price_ibfk_3 FOREIGN KEY (o_price_id) REFERENCES price_list (price_id)
)ENGINE=INNODB;
表格中包含以下衬衫:
shirts
并且您的SHIRT_ID SHIRT_NAME SHIRT_TYPE SHIRT_SIZE
1 Crewneck Tee Men S
2 Crewneck Tee Men M
3 Crewneck Tee Men L
4 Crewneck Tee Men 1X
5 Crewneck Tee Men 2X
表格具有以下价格:
price_list
然后每件衬衫将链接到2个价格,一个用于PRICE_ID PRICE_CAT PRICE
1 crn_qp_a 27.2
2 crn_o_a 25.31
3 crn_qp_b 28.1
价格,另一个用于qp
价格。
o
要查询所有男士衬衫的价格,请执行以下操作:
SHIRT_ID QP_PRICE_ID O_PRICE_ID
1 1 2
2 1 2
3 1 2
4 3 2
5 1 2
有用的阅读: