基本的に何らかのログデータがユーザに表示されていることを示すいい数字のDataGridView
があります。 ユーザーは、地区、地域、居住地、通り別にフィルタリングできます。
はこれまでのところ、ComboBoxes
は最初で唯一の地区が値を持っているので、一つだけを選ぶの後、および、地域1は、などが利用可能な値でコンボボックスをフィルタリングする
新しい要件がすべてということである、適切な値で満たされて、お互いにリンクされていますリストには実際にログテーブルに存在する値のみが表示されます。つまり、地区1に10の異なる地域があり、そのうちの2つだけがデータに表示されている場合は、その2つの地域のみを表示します。特に和解や路上では、合理的に聞こえるが、合計コードと使用コードの比率がはるかに高い。
私はこれを行う2つの主要な方法を考えました。
まず、私はフィルタリングすることができます参加:
select r.code, r.name
from Region r
join LogTable l on (r.code = l.regionCode)
where r.districtCode = :districtCode;
それとも私が副選択でこれを行うことができます。
select r.code, r.name
from Region r
where r.code in (select distinct l.regionCode
from LogTable l)
and r.districtCode = :districtCode
第三の選択肢は、地区のすべての個別の値を読んで起動することです、地域logTaableに、決済と通りを入力してから、事前に計算されたin節でsubselectオプションを使用します。最初の読み込み後に入力された新しい値は表示されないため、少し柔軟性がないようです。
方法に大きな違いはありますか?あるいは、どちらもうまくいくでしょうか?
P.S. LogTableコードの列にインデックスが設定されているとは思えません。
ええ、サブセレクトはほんの少し速かったです。だから私はそれを選んだ。 –