0

Case ステートメントで複数の値を返すことができないことはわかっていますが、これが、私が達成したいことを説明できる最善の方法です。別のフィールドに入力された内容に基づいて異なる値を返すステートメントを作成しようとしています。現在、次のようなものがあります。

SELECT animal WHERE CASE WHEN :textbox is not null THEN (SELECT animal from animalsTable where animalType = :textbox ELSE (SELECT plant from plantsTable where plantType = 'edible')

基本的に、ユーザーがテキストボックスに入力した内容に対応するすべての動物を一覧表示できるようにしたいのですが、テキストボックスに何も入力しない場合は、代わりに食用のすべての植物を表示したいと考えています。ほとんどの場合、入力する値ごとに複数の値を返します。

たとえば、ユーザーが「犬」と入力すると、「犬」と「オオカミ」が返されます。case ステートメントはブール値であるため、これは問題を引き起こします。どうすればこれを回避できますか?

ありがとう。

4

2 に答える 2

0

textbox各テーブルの値を確認し、結果を結合できます。

select animal from animalsTable where animalType = :textbox 
and :textbox is not null
union all
select plant from plantsTable where plantType = 'edible' 
and :textbox is null
于 2015-01-12T21:10:40.917 に答える
0

すべてのルックアップ値リストを含む ALN ドメインを作成できます。この場合、動物と植物の両方。次に、フィルタリングするキー フィールドに基づいて ALN ドメインを参照するテーブル ドメインを作成します。このキーを [説明] フィールドに、単一の値、またはスペースまたはコンマで区切った複数の値として保存する必要があります。

私たちの場合、資産部門番号でのテーブル ドメイン フィルタリングを使用して、ALN ドメインからの制限付きルックアップを表示するカスタム フィールド (サブカテゴリ) を使用しました。資産部門番号は、ALN ドメインの説明に記載されています。

ALN ドメインには、植物と動物の値が含まれています。ALN ドメインの説明には、キー フィールドの値が含まれています。

資産部門が空の場合、リスト全体が表示されます。

domainid='CBRSUBCAT' および '%' のような説明 ||  (assetnum = :assetnum のアセットから eq5 を選択) ||  '%'

where句のリストは次のようになります。

domainid='CBRSUBCAT' and description like '%' || (select eq5 from asset where assetnum = :assetnum) || '%'

を使用してlike、1 つのサブカテゴリに複数の部門をコンマで区切って入力できるようにしました。必要に応じて、説明=(equals) を使用できます。

于 2016-12-12T17:35:21.307 に答える