2013-05-07 105 views
-1

請有人可以幫助解釋我將如何去建立一個SQL查詢加入附加圖像中的表。我是新來的網絡&數據庫設計,並已與它掙扎天!! [表] [1]SQL幫助加入多個表

http://i44.tinypic.com/9863c0.jpg

它背後的想法是:可以有許多商店和許多產品一樣,每個商店可以銷售與其他商店相同的產品,因此需要名爲「商店:產品」的表格。爲了節省空間並提高性能,我還將字段大小和顏色分解爲兩個其他表格。如何將它們連接在一起,以便數據庫服務器在查詢特定商店ID時返回商店名稱及其銷售的產品(包括產品尺寸和顏色)?

謝謝! :)

回答

0

請檢查出來:

SELECT s.name, p.name, si.size, c.colour 
FROM shops s 
INNER JOIN product sp ON (sp.shop_id = s.id) 
INNER JOIN products p ON (p.prod_id = sp.prod_id) 
INNER JOIN sizes si ON (si.id = p.size) 
INNER JOIN colours c ON (c.id = products.colour) 

例子2:

SELECT s.name, p.name, 
    GROUP_CONCAT(si.size) AS sizes, 
    GROUP_CONCAT(c.colour) AS colours 
FROM shops s 
INNER JOIN product sp ON (sp.shop_id = s.id) 
INNER JOIN products p ON (p.prod_id = sp.prod_id) 
LEFT JOIN sizes si ON (si.id = p.size) 
LEFT JOIN colours c ON (c.id = products.colour) 
GROUP BY s.id, p.id 

重要考慮:

  • 你應該在你的表產品size_id,而是colour_id採用尺寸和顏色。
  • 不確定是否所有產品都有尺寸和顏色,如果不是,請考慮將這兩者的內部連接切換爲LEFT JOIN;
  • 您應該更改shop_product的產品表名稱;
  • 表格的名稱應該是單數而非複數(不是義務);
  • 您也可以通過店鋪和產品,並有串聯的顏色和大小的列(例如2)
+0

謝謝你,麥地那,正是我一直在尋找的組。你的第一個解決方案奏效:) – Juned 2013-05-08 10:55:46