php - 具有多个选项过滤器 mysql 和 php 的产品

标签 php mysql

我正在设置一个具有以下布局的数据库:

产品类别(ID、名称) prodsToCategory (cat_id, prod_id) 产品(ID、名称、描述等) prodsToOptions(prod_id,cat_id) prodOptions(ID、类型、名称)

我正在寻找最有效的 mysql 查询来连接表并仅返回已选择选项的产品。

我目前有:

  SELECT
    p.ID,
    p.name,
    p.description,
    p.code,
    po.name
  FROM
    Products p
    LEFT OUTER JOIN prodsToCategory pc ON p.ID = pc.product_id
    LEFT OUTER JOIN prodsToOptions pto ON p.ID = pto.product_id
    LEFT OUTER JOIN prodOptions po ON pto.option_id = po.ID
  WHERE   p.active = '1'
  AND     pc.category_id = '1'
  AND     (po.name = 'black' OR po.name = 'blue')
  GROUP BY p.ID

网址看起来像这样:

www.test.com/cars?options=black-blue-manual 等(使用 ajax 发布)

上面的查询确实有效,但我确信当设置更多选项时有一种更简洁的方法。

即使数据库架构需要更改,我们也会感激地收到任何建议。

提前致谢

最佳答案

使用,AND po.name IN('black','blue')

关于php - 具有多个选项过滤器 mysql 和 php 的产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26149581/

相关文章:

mysql连接没有释放?

php - 如何实现分布式文件上传解决方案?

php - 我是 PHP 新手,收到此错误 :

php - php 如何检查之前存储的 time() 值是否是今天?

c++ - 如何使用 MySQL C++ 连接器检查 null 或空结果集?

mysql - 如何使用redgate数据比较工具比较数据

php - 如何使用php水平显示数据库中的所有文件?

php提交仅给出填充表单的数组中的最后一个值

PHP MySQL 数据库

mysql - Docker MYSQL '[2006] MySQL server has gone away'