2011-02-08 41 views
2

我試圖實現許多一對多db表「產品」和表「公司」MySQL的加入問題

公司擁有其唯一的ID,並且產品具有唯一的ID,以及作爲其主鍵之間的關係。

並讓我們說表'Sells'有company_id和product_id作爲列。 由於這將是一個多對多的關係,所以這張表不會有主鍵,對吧?

如果我想獲得屬於單個公司的產品,Mysql查詢會如何? 這可以在單個查詢中完成嗎?

+0

「既然將是一個多一對多的關係,就不會有此表的主鍵,對不對?」錯誤。你將有一個包含兩列的複合PK。 – 2011-02-08 22:50:52

回答

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

你可以有由一個主鍵多列,所以對於你的聯合表,你會使主鍵爲(company_id, product_id)

0

由於它是將是一個多一對多 關係,就不會有此表 主鍵,對不對?

事實上,存在多對多關係並不妨礙您添加主鍵。您可以使用自動編號(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