我想通过IdProduct在表客户和表产品之间建立链接。
示例:
Create table customer(
idcustomer INT not null,
name Varchar(20),
idproduct INT,
);
create table Product(
idproduct INT not null,
nameProduct varchar(40)
);
如何将两者联系起来,就像外键系统一样,当我选择一个客户时,我可以得到他所有的产品?这是关于数据库结构的问题。
答案 0 :(得分:2)
您想引入第3个表来解决客户和产品之间的多对多关系。它应该包含idcustomer
和idproduct
。
然后,获取给定客户的所有产品:
SELECT c.name, p.nameProduct
FROM Customer c
INNER JOIN CustomerProductXref cpx
ON c.idcustomer = cpx.idcustomer
INNER JOIN product p
ON cpx.idproduct = p.idproduct
WHERE c.idcustomer = 12345
答案 1 :(得分:1)
以下是您如何制定外键约束(忽略Joe正确建议的基数问题):
CREATE table Product(
idproduct INT not null,
nameProduct varchar(40),
PRIMARY KEY (idproduct )
);
CREATE table customer(
idcustomer INT not null,
name Varchar(20),
idproduct INT,
FOREIGN KEY (idproduct) REFERENCES Product(idproduct )
);
获取您的数据:
SELECT * FROM Product AS P
INNER JOIN Customer AS C ON C.idproduct = P.idproduct
WHERE C.idcustomer = 1
答案 2 :(得分:1)
在mysql中,外键是一种特殊类型的约束。它最好用表格创建,但也可以在之后添加。在这种情况下,您可以将约束定义为:
ALTER TABLE客户 添加外键(idproduct) 参考产品(idproduct);
(注意你必须使用InnoDB引擎来利用mysql中的FK。更多here
但是FK不需要进行JOIN,这就是你在SELECT中链接表的方法 -
select c.idcustomer, c.name, p.nameproduct
from customer c
join Product p on p.idproduct=c.idproduct;