2016-03-04 111 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