0

我有以下表结构:

分类:

 1. id
 2. parent_id
 3. category

属性:

 1. id
 2. attribute

类别_属性

 1. category_id
 2. attribute_id

属性值

 1. id
 2. attribute_id
 3. value

产品

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

产品_属性_值

 1. product_id
 2. attribute_id
 3. value_id

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

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

如何根据类别产品及其属性和值选择属性和值?例如,如果 Beads 类别的产品仅具有 12mm 和 14mm 直径的产品,则应在过滤器中省略其他值。

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

抱歉格式化,用我的手机写。提前致谢。

4

1 回答 1

0

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

SELECT *
FROM   categories
JOIN   products ON products.category_id = categories.id 
GROUP BY categories.id, products.attribute
于 2013-01-23T23:13:57.303 回答