2017-06-28 12 views
1

私が必要とするもののために既存のスレッドが見つかりませんでした。私はユーザーに入力(クライアント)を求め、パラメータとしてSQLに渡すことを可能にするレポートツールを持っています。Where句でのパラメータの使用

複数のクライアントまたはすべてが存在する可能性があります。パラメータに 'All'が含まれている場合は、すべてのレコードを選択する必要があります。パラメータに 'All'が含まれていない場合は、パラメータ内のレコードのみを選択する必要があります。

パラメータが1つのみ値で、mineがリストで、 'in'述語を使用する必要がある場合、いくつかの解決策が見つかりました。 (私は思う)

どのような考え?次のようなものが何をすべきあなたのデータモデルを知らなくても

+1

あなたのRDBMS - MySqlにタグを付けてください。 SQLサーバー?多くの場合、[this](https://stackoverflow.com/questions/9384446/how-to-pass-sqlparameter-to-in)のように、コードにリストされたパラメータを処理する必要があります。さもなければあなたの選択肢は私がめったに提案しない動的SQLです。 – Santi

+0

これには、レポート作成ツールの機能が必要になる可能性があります。それは何ですか? –

+0

Sanit - Intertersystemsキャッシュと私は、動的なSQLの提案rdを見ることに興味があります - それはよく知られていない私は思っていません。それはビジュアルデータマイナーと呼ばれ、これを処理するいくつかの機能がありますが、これは私がSQLソリューションを見つけることを望んでいる理由であるサーバー側で行われたいです – CoSpringsGuy

答えて

2

、:

SELECT * 
FROM clients 
WHERE ID IN (@clients) OR 'All' IN @clients 
+2

チャンピオンのように働いた! – CoSpringsGuy

+1

@CoSpringsGuy嬉しいです。その場合は、この回答を将来の参照のための受け入れられた回答とすることができます。 – Aquillo

2

は、Cachéについて話すとき、それはあなたも、あなたのクエリを実行する方法複数の方法を持っていることを意味します。また、それを達成する方法もいくつかあります。 ALLレコードと選択したレコードに対して、異なるクエリを使用することをお勧めします。また、INまたは%INLIST述部を使用できます。

関連する問題