如何链接这些MYSQL表?

时间:2012-11-30 21:48:54

标签: mysql sql create-table

我一直绞尽脑汁想要弄清楚如何通过外键完成链接,以帮助简化生活。我有两个表设置,并希望第三个链接到他们都添加几个列到第三个。这是我想出的语法......

SQL Fiddle (with sample data)

衬衫

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次....这样做有意义吗?....请帮忙......哈哈

1 个答案:

答案 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           

有用的阅读: