我有以下表结构:
分类
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毫米直径,则过滤器中应省略其他值。
我知道这可能很愚蠢,但这是我第一个使用这种数据库模式的项目,而且我已经完成了这个问题的所有问题。
抱歉格式化,从手机上写字。 提前谢谢。
答案 0 :(得分:0)
您可以进行加入以确保该类别具有可加入的产品,然后是GROUP BY category.id,以便您只获得一次类别。
SELECT *
FROM categories
JOIN products ON products.category_id = categories.id
GROUP BY categories.id, products.attribute