php - MySQL、PHP - 动态产品功能的搜索引擎(在另一个表中)

标签 php mysql pivot

我的目标:展示具有某些功能的产品(由表单决定)

我的数据结构简化了(如果看起来不好,请随时告诉我): 表产品

  • ID
  • 姓名(例如:鞋子)

表product_features

  • 产品 ID
  • 类型(例如:尺寸)
  • 值(例如:42)

我的问题:如何选择具有功能类型“尺寸”和值“42”和“43”的产品列表

即使类型相同,产品也可以有多个“product_features” (例如:颜色->红色、尺寸->42、尺寸->43)

我尝试的示例:

  • 左连接product_features的次数与我为每个产品获得product_features的次数相同(非常重)
  • 创建一个带有枢轴的 vue -> 当产品有许多具有相同类型的product_features(例如:许多尺寸)时出现结构问题
  • 在 php 中完成 -> 如果没有非常繁重的过程就无法获得每个 Product_features

(我是法国人,所以,抱歉我的英语不好) 提前非常感谢

最佳答案

我认为这只是一个简单的 INNER JOIN 即可获得结果,然后 HAVING COUNT(f.value) = 2 将确保该产品的尺寸为 42 和 43。

SELECT p.id,p.name
FROM product_features f
INNER JOIN products p ON p.id = f.product_id
WHERE f.type = 'size' AND f.value IN ('42','43')
GROUP BY p.id,p.name
HAVING COUNT(f.value) = 2

http://sqlfiddle.com/#!9/eda53/3

关于php - MySQL、PHP - 动态产品功能的搜索引擎(在另一个表中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38296110/

相关文章:

PHP/JSON 解析

mysql - 寻找MySQL表结构推荐

python - 在 python Dataframes 中,如何添加与其他数据框中的单行相关的多行作为附加列?

sql - 如何以日期为列动态旋转

php - 理解异常

PHP:在 '$this' 中使用 '$this' ?

php - MySQL在大数据列表上自动生成嵌套集合模型?

MySQL SELECT WHERE CASE

mysql - MAMP 未连接到本地主机

mySQL - 多行合并为一行