我正在努力实现数据库表'产品'和表'公司'
之间的多对多关系公司有其独特的ID,产品也有唯一的ID作为主键。
并且假设表'Sells'有company_id,product_id有列。 由于它将成为多对多关系,因此该表不会有主键,对吧?
如果我想获得属于单个公司的产品,Mysql查询会是什么样的? 可以在一个查询中完成吗?
答案 0 :(得分:1)
就个人而言,我会在Sells表中创建复合(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
答案 1 :(得分:1)
您可以拥有一个由多个列组成的主键,因此对于您的联合表,您可以将主键设为(company_id, product_id)
。
答案 2 :(得分:0)
因为它将成为多对多 关系,不会有 这个表的主键,对吧?
存在多对多关系这一事实并不妨碍您添加主键。您可以使用自动ID(Sale_Id)生成一个。您不应该依赖product_id + company_id,因为给定的公司可以多次销售同一产品。
如果我,Mysql查询会是什么样的 想要获得属于的产品 到一家公司?可以这样做 在一个查询中?
SELECT S.PRODUCT_ID FROM SALES S INNER JOIN COMPANY C ON (C.ID = S.COMPANY_ID) WHERE C.ID = XXX