Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根据类别的产品获取过滤器的属性和属性值_Php_Mysql_Database Schema - Fatal编程技术网

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

Php 根据类别的产品获取过滤器的属性和属性值,php,mysql,database-schema,Php,Mysql,Database Schema,我有以下表格结构: 类别: 属性: 类别和属性 属性值 产品 产品属性值 现在,当我打开category时,让我们假设Beadsid=1。我选择该类别的所有属性及其属性的所有值 问题是我的直径属性ID=1有10个值:4mm、6mm、8mm、12mm、14mm、16mm、18mm、20mm、24mm、30mmids 1-10,它们都显示在过滤器中,即使我没有直径为20mm的产品 如何根据类别产品及其属性和值选择属性和值? 例如,如果类别珠子的产品直径仅为12mm和14mm,则应在过滤器中忽略其他值

我有以下表格结构:

类别:

属性:

类别和属性

属性值

产品

产品属性值

现在,当我打开category时,让我们假设Beadsid=1。我选择该类别的所有属性及其属性的所有值

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

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

我知道这可能很愚蠢,但这是我的第一个使用这种db模式的项目,我已经处理了这个问题的所有例外

抱歉格式化,从我的手机写入。
提前感谢。

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

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

我认为他应该按产品分组,但问题不在于选择产品,我需要从特定类别的产品中获取属性和值,并向用户显示可用的属性和值
 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
SELECT *
FROM   categories
JOIN   products ON products.category_id = categories.id 
GROUP BY categories.id, products.attribute