0

私のデータベースには、公正、良い、非常に良い、理想的、署名理想の 5 つの値を持つフィールドがあります。

それぞれすべての値を持つ 2 つのドロップダウンがあるコールドフュージョン フォームがあります。私が探しているのは、ユーザーが範囲を選択できるようにすることです。たとえば、ドロップダウン 1 = 普通 ドロップダウン 2 = 非常に良い。したがって、これは何らかの方法で SQL WHERE ステートメントを生成します。

グレード IN (「普通」、「良い」、「非常に良い」)

値がこのようでなければならないことを考えると、これをプログラムするスマートな方法を考えることができますか? それらを配列に入れてから、それをループしたり、何かをしたりすると思います。私はこれに少し困惑しています。

4

1 に答える 1

3

他の人が述べたように、再設計は、効率とデータの完全性の両方の点で、最終的にはより良い行動方針です。ただし、構造を絶対に変更できない場合は、可能な回避策として、許容されるグレードの説明と、それぞれの数値評価値のルックアップ テーブルを作成することができます。

 GradeID | GradeText        | Rating
 1       | Fair             | 0
 2       | Good             | 1
 3       | Very Good        | 2
 4       | Ideal            | 3
 5       | Signature Ideal  | 4

次に、ルックアップ テーブルのクエリから選択リストを作成します。ORDER BY Rating ASC定格番号をリスト値として必ず使用してください。次に、アクション ページで、選択した値を使用して範囲でフィルター処理します。(明らかに、選択した範囲も有効であることを検証します)

  SELECT  t.ColumnName1, t.ColumnName2
  FROM    SomeTable t INNER JOIN YourLookupTable lt ON lt.Grade = t.GradeText
  WHERE   lt.Rating BETWEEN <cfqueryparam value="#form.dropdown1#" cfsqltype="cf_sql_integer">
          AND <cfqueryparam value="#form.dropdown2#" cfsqltype="cf_sql_integer">

繰り返しますが、代わりにリストラをお勧めします。ただし、それが本当にオプションでない場合は、上記が機能するはずです。

于 2012-05-25T02:27:11.697 に答える