0

所以有一个与“报价”相关的参数表。参数表如下所示:

  • offer_id
  • 参数名称
  • 参数值

表条目如下所示:

报价 ID | 参数名称 | 参数值

1 | 价格 | 100

1 | 宽度 | 150

1 | 身高 | 200

1 | 地点 | 剩下

1 | 地点 | 对

2 | 价格 | 300

2 | 宽度 | 150

2 | 身高 | 200

现在我想在这个表中使用 MySQL 查询执行搜索,其中

  • 价格大于80小于120 _
  • 宽度等于150 _
  • 高度等于200 _
  • 地方是左还是_

预期结果:

  • 报价 ID = 1

MySQL 查询会是什么样子?

非常感谢。

4

1 回答 1

1

像这样的东西: -

SELECT *
FROM offers a
INNER JOIN offers b ON a.offerid = b.offerid
INNER JOIN offers c ON b.offerid = c.offerid
INNER JOIN offers d ON c.offerid = d.offerid
WHERE a.parameter_name = 'price'
AND b.parameter_name = 'width'
AND c.parameter_name = 'height'
AND d.parameter_name = 'place'
AND a.parameter_value BETWEEN 80 AND 120
AND b.parameter_value = '150'
AND c.parameter_value = '200'
AND d.parameter_value IN ('left','right')

请注意,这有时会返回多行(即 1 的 id 会多次返回)。如果需要,可以使用 DISTINCT 删除它。取决于如何使用数据。

于 2012-10-15T21:58:25.727 回答