我有以下表格结构:
类别:
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
现在,当我打开类别时,让我们说"珠子"(id = 1)。我选择此类别的所有属性及其属性的所有值。
问题是我有 10 个"直径"属性值(id = 1):4 毫米、6 毫米、8 毫米、12 毫米、14 毫米、16 毫米、18 毫米、20 毫米、24 毫米、30 毫米(ids 1-10),即使我没有直径为 20 毫米的产品,它们也都显示在过滤器中。
如何根据分类产品及其属性和值选择属性和值?例如,如果类别珠子的产品只有直径为12mm和14mm的产品,则应在过滤器中省略其他值。
我知道这可能很愚蠢,但这是我第一个使用这种数据库模式的项目,我已经解决了除此问题之外的所有项目。
抱歉格式化,从我的手机写。提前谢谢。
您可以执行 JOIN 以确保该类别具有可加入的产品,然后执行 GROUP BY category.id,以便您只获取一次类别。
SELECT *
FROM categories
JOIN products ON products.category_id = categories.id
GROUP BY categories.id, products.attribute