根据类别的产品获取过滤器的属性和属性值

时间:2013-01-23 23:10:09

标签: php mysql database-schema

我有以下表结构:

分类

 1. id
 2. parent_id
 3. category

属性:

 1. id
 2. attribute

Categories_Attributes

 1. category_id
 2. attribute_id

Attributes_Values

 1. id
 2. attribute_id
 3. value

产品

 1. id
 2. category_id
 3. product
 4. price

Products_Attributes_Values

 1. product_id
 2. attribute_id
 3. value_id

现在,当我打开类别时,让我们说“Beads”(id = 1)。我选择此类别的所有属性及其属性的所有值。

问题是“直径”属性(id = 1)有10个值:4mm,6mm,8mm,12mm,14mm,16mm,18mm,20mm,24mm,30mm(ids 1-10),它们都是在过滤器中显示,即使我没有直径为20mm的产品。

如何根据分类产品及其属性和值选择属性和值? 例如,如果类别珠子的产品只有12毫米和14毫米直径,则过滤器中应省略其他值。

我知道这可能很愚蠢,但这是我第一个使用这种数据库模式的项目,而且我已经完成了这个问题的所有问题。

抱歉格式化,从手机上写字。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

您可以进行加入以确保该类别具有可加入的产品,然后是GROUP BY category.id,以便您只获得一次类别。

SELECT *
FROM   categories
JOIN   products ON products.category_id = categories.id 
GROUP BY categories.id, products.attribute