我試圖實現許多一對多db表「產品」和表「公司」MySQL的加入問題
公司擁有其唯一的ID,並且產品具有唯一的ID,以及作爲其主鍵之間的關係。
並讓我們說表'Sells'有company_id和product_id作爲列。 由於這將是一個多對多的關係,所以這張表不會有主鍵,對吧?
如果我想獲得屬於單個公司的產品,Mysql查詢會如何? 這可以在單個查詢中完成嗎?
我試圖實現許多一對多db表「產品」和表「公司」MySQL的加入問題
公司擁有其唯一的ID,並且產品具有唯一的ID,以及作爲其主鍵之間的關係。
並讓我們說表'Sells'有company_id和product_id作爲列。 由於這將是一個多對多的關係,所以這張表不會有主鍵,對吧?
如果我想獲得屬於單個公司的產品,Mysql查詢會如何? 這可以在單個查詢中完成嗎?
就我個人而言,我會在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
你可以有由一個主鍵多列,所以對於你的聯合表,你會使主鍵爲(company_id, product_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
「既然將是一個多一對多的關係,就不會有此表的主鍵,對不對?」錯誤。你將有一個包含兩列的複合PK。 – 2011-02-08 22:50:52