2016-03-04 112 views
0

在mySql中,我需要找到含有金額的產品。MySQL - 獲取產品金額

這不是問題和簡單。 (這只是一個例子

ProductID,Name,Ammount 
1,PRODUCT1,5 

但我有很多的屬性本產品。 (不僅顏色和大小)

PropertiID,Name 
1,black 
2,yellow 
3,red 
4,blue 
5,S 
6,M 
7,L 
8,XL 

這給我產品很多組合與ID 1等 作爲例子:

PRODUCT1,black,S 
PRODUCT1,red,XL 
PRODUCT1,red,L 
PRODUCT1,red,M 
... 

我必須保存每個組合的ammount的。

PRODUCT1,black,S,4 
PRODUCT1,red,XL,6 
PRODUCT1,red,L,2 
PRODUCT1,red,M,0 
... 

問題是金額。 我在哪裏可以節省金額。 我有1行1產品和一些組合與產品相關的屬性。

感謝您的幫助 安迪

+0

產品和屬性表有什麼關係?他們之間沒有外鍵。 – Barmar

+0

表格之間現在沒有關係。因爲我怎麼可以混合產品和屬性(超過1)。我在哪裏保存Ammount。我必須在'Product'和'Properties'之間製作一張表格嗎?一個'Product_Properties'表。然後我可以建立關係。然後我在'Product_Properties'表中保存'ProductID','PropertiesID'和'Ammount'。但這不是一個好的表.. – Andy

回答

0

假設表爲productproperty,和property的名字有產品編號的參考,下面的查詢應該工作:

select p.productId, amount, group_concat(pr.name) 
from product p join property pr on p.productId = pr.productId 
group by p.productId, amount 
0

你需要一個ProductProperties表關聯這兩張表。然後你可以使用GROUP_CONCAT來組合所有的屬性。

SELECT p.productID, p.amount, GROUP_CONCAT(pr.name) AS properties 
FROM Product AS p 
JOIN ProductProperties AS pp ON p.productID = pp.productID 
JOIN Property AS pr ON pr.PropertyID = pp.PropertyID 
GROUP BY p.productID 
+0

但是,然後我有'產品'表中的'p.amount' 1產品。但是我有很多PRODUCT1的組合,不同的PRODUCT1有不同的組合。我不知道我在哪裏保存'金額'。我不能將它保存在'Product'表中,因爲我有一個產品線,並且有很多與'Propertys'的組合......我的數據我有一個產品有80多種組合。我有大約300種產品,如果我將它與組合保存在產品表中,則有24000種產品。所以我有我的300產品在產品表和我的屬性。 – Andy

+0

Product的每一行都是具有一組特定屬性的產品實例。你可以在'Product'表中輸入'1,PRODUCT1,4'和'2,PRODUCT1,6'。然後'ProductProperty'表將表明'ProductID = 1'具有'black'和'S'屬性,而'ProductID = 2'具有'red'和'XL'屬性。 – Barmar

+0

好的,這很清楚。但是,那麼用戶必須輸入80種具有1種產品組合的產品。在GUI中,他擁有超過24000種產品。 – Andy