0

ASP.NET と SQL サーバーを使用して Web サイトを開発しています。基本的に 1 つ以上の特定の基準で検索結果をフィルタリングする絞り込み検索を提供したいと考えています。すべての絞り込み検索フィールドとカウントを表示したい (検索結果の左側にいくつかのフィールドがカウント付きで表示される Amazon Web サイトと同様)


価格別
50 から 100 (10)
100 から 500 (50) のようなもの...

投稿日まで
7日以内 (40)
15日以内 (90)
30日以内 (150)

等々 ...

通常の検索は、いくつかの検索条件を使用して行われます。SQL Server を使用しており、ストアド プロシージャはページング手法とページごとの結果数を使用しています。

したがって、回答するときは、この情報を考慮して、可能であれば実際のサンプル リンクを提供してください。

どうもありがとう。

4

1 に答える 1

1

これは、SQL サーバー プロシージャとコードを少し変更するだけで実行できます。

すべての絞り込み要素を変数としてストアド プロシージャに保持します。たとえば、価格が調整属性の場合、調整パラメーターの値を SQL サーバーに渡します。2 つの変数 @min_price と @max_price を作成します。これらはストアド プロシージャに渡され、ページングと並べ替えの前にステートメントの where に含まれます。起こる。
編集:
あなたは条件付きパラメータが必要だということです。その場合はISNULL () 、たとえば次のように使用します。特定の価格帯の製品と、特定のカテゴリの製品名、つまり Mobiles 、 Electronics が必要です。この Category パラメータが null の場合、比較を避ける必要があります。その場合:

SELECT * 
FROM Products p
WHERE 
p.Price BETWEEN @min_price AND @max_price
AND
p.Category = ISNULL(@category, p.Category)

この場合、@category パラメーターが null の場合、比較を Category 自体に置き換えます。つまり、Mobile = Mobile は true を返します。

また、作成するクエリが複雑すぎる場合は、動的 SQL クエリが唯一の解決策です。ただし、これらの実行計画は保存されないため、パフォーマンスが低下するため、これらを回避するようにしてください。

于 2012-07-06T10:04:05.750 に答える