-1

次のテーブル スキーマと値があります。

テーブルの構造と値

私が達成したいのは、複数の基準に一致するプロバイダー ID (id_provider) のリストを取得することです。次に例を示します。

  • id_attribute = 71 と値 3400 で検索し、値が 4300 である id_attribute = 70 でそのテーブルをフィルター処理したいです。戻りプロバイダーのリストは次のようになります: (2)
  • 次の検索 - id_attribute = 72 で、フィルタリングされた値が 200 から 700 の間であるため、(2,3) に等しいプロバイダー リストを返す必要があります。

そのような構造でこれは可能ですか?

4

4 に答える 4

0

最初の検索:

SELECT your_fields
FROM your_table
WHERE ((id_attribute = 71 AND value = 3400) AND (id_attribute = 70 AND value=4300))

2 回目の検索:

SELECT your_fields
FROM your_table
WHERE (id_attribute = 72 AND (value BETWEEN 200 AND 700) )

「論理的な」下位区分を示すために、多くの括弧を使用しました。

于 2013-07-16T12:47:40.730 に答える
0

他の答えは正しいですが、あなたの値フィールドは varchar のように見えます....u は varchar に「before」を使用できません。

範囲にのみ使用できます...つまり、日付間または数値間です。

于 2013-07-16T12:59:44.307 に答える
0

異なる行の値を組み合わせているので、 と を考えgroup byhavingください。最初のクエリは次のとおりです。

select id_provider
from
group by id_provider
having max(id_attribute = 71 and value = '3400') > 0 and
       max(id_attribute = 70 and value = '4300') > 0;

そして2番目:

select id_provider
from
group by id_provider
having max(id_attribute = 72 and value between '200' and '700') > 0;

値列が実際には文字列であるため、引用符が付けられていることに注意してください。数値比較が必要な場合は、数値への変換が必要になる場合があります。

于 2013-07-16T13:50:32.903 に答える