【问题标题】:products with multiple option filters mysql and php具有多个选项过滤器 mysql 和 php 的产品
【发布时间】:2014-11-26 18:41:11
【问题描述】:

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

prodCategory(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 发布)

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

我们非常感谢任何建议,即使数据库架构需要更改。

提前致谢

【问题讨论】:

  • a.) 确保您的表已正确编入索引。 2.) 使用 EXPLAIN 查询来优化您的查询并确保它们正在使用索引。

标签: php mysql


【解决方案1】:

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

【讨论】:

  • IN 比 OR 更有效吗?
猜你喜欢
  • 2013-10-20
  • 2017-04-16
  • 1970-01-01
  • 2023-03-05
  • 1970-01-01
  • 1970-01-01
  • 2019-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多