我正在尝试实现db表'Products‘和表'Companies’之间的多对多关系。
公司有其唯一的id,产品也有唯一的id,作为它们的主键。
假设表‘Sell’有company_id和product_id作为列。因为这将是一个多对多的关系,所以这个表不会有主键,对吧?
如果我想得到属于一家公司的产品,Mysql查询会是什么样子?这可以在一个查询中完成吗?
发布于 2011-02-09 06:49:32
就我个人而言,我会在销售表中为组合(company_id,product_id)创建一个主键。
至于查询本身,如果您只想返回产品信息:
select p.*
from Sells s
inner join products p
on s.product_id = p.product_id
where s.company_id = 123如果您希望返回公司和产品信息:
select c.*, p.*
from Company c
inner join Sells s
on c.company_id = s.company_id
inner join products p
on s.product_id = p.product_id
where c.company_id = 123发布于 2011-02-09 06:50:52
您可以有一个由多个列组成的主键,因此对于您的联合表,您应该将主键设置为(company_id, product_id)。
发布于 2011-02-09 06:56:16
因为这是一个多对多的关系,所以这个表不会有主键,对吧?
存在多对多关系这一事实并不妨碍您添加主键。您可以使用自动id (Sale_Id)生成一个。您不应该依赖product_id + company_id,因为给定的公司可能会多次销售相同的产品。
如果我想得到属于一个公司的产品,Mysql query会是什么样子?这可以在一个查询中完成吗?
SELECT S.PRODUCT_ID FROM SALES S INNER JOIN COMPANY C ON (C.ID = S.COMPANY_ID) WHERE C.ID = XXXhttps://stackoverflow.com/questions/4939391
复制相似问题