【问题标题】:Get attributes and attributes values for filters based on category's products根据类别的产品获取过滤器的属性和属性值
【发布时间】:2013-01-23 23:10:09
【问题描述】:

我的表结构如下:

类别:

 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):4mm、6mm、8mm、12mm、14mm、16mm、18mm、20mm、24mm、30mm(ids 1-10),它们都是即使我没有直径为 20 毫米的产品,也会显示在过滤器中。

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

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

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

【问题讨论】:

    标签: php mysql database-schema


    【解决方案1】:

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

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

    【讨论】:

    • 我觉得他应该做GROUP BY产品属性
    • 问题不在于选择产品,我需要从特定类别的产品中获取属性及其值并向用户显示可用的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-12
    相关资源
    最近更新 更多