0

そのため、「オファー」に関連付けられたパラメーターのテーブルがあります。パラメータ テーブルは次のようになります。

  • offer_id
  • パラメータ名
  • パラメータ値

テーブル エントリは次のようになります。

offer_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 に答える