0

私は不動産のウェブサイトを持っていて、デフォルトのページで、ユーザーが自分のパラメーターに適合する投稿の数を取得できるようにしたいとしましょう

サンプル画像へのリンクを追加 しました

カウンターはすべての変更に反応し、ユーザーに番号を自動的に表示する必要があります (これは ajax jquery で行われます)

クエリを作成しましたが、すべてのパラメーターが入力されている場合にのみ機能し、いくつかを入力してカウンターを機能させたい

ここにクエリがあります

ALTER PROCEDURE shahar30_nadlan.CountPropertyResultsByquery 


@AreaID         int,
@DealID        int,
@PropertyTypeId int,
@FieldMax      int,
@FieldMin      int,
@RoomsMax      decimal,
@RoomsMin      decimal,
@PriceMax      int,
@PriceMin      int,
@ParkingSpace  bit,
@Elevator      bit,
@Aircondition  bit,
@Furniture     bit,
@Warehouse     bit,
@Balkony       bit,
@handicapped  bit, 
@Immediate    bit,
@Description  NVARCHAR(MAX)

AS
BEGIN


select count(*) from Tbl_Property
where AreaID        = @AreaID         and 
  DealID        = @DealID         and
  PropertyTypeId= @PropertyTypeId and
  Field  <= @FieldMax        and
  Field  >= @FieldMin        and
  Rooms  <= @RoomsMax        and
  Rooms  >= @RoomsMin        and
  Price  <= @PriceMax        and
  Price  >= @PriceMin       and
  ParkingSpace = @ParkingSpace   and
  Elevator = @Elevator       and
  Aircondition = @Aircondition   and
  Furniture = @Furniture      and
  Warehouse = @Warehouse      and
  Balkony = @Balkony        and
  handicapped = @handicapped    and
  [Immediate] = @Immediate      and
  Description like  '%' + @Description + '%' 

END

ありがとう、シャハル・ナルディア。

4

2 に答える 2

2

オプションのパラメータを試しましたか?以下に例を示します。

@PriceMin      int = 1,

そのようにデフォルト値を設定できます。次に、必要なパラメーターのみを渡し、残りはデフォルト値のままにします。

于 2012-04-25T09:09:40.253 に答える
2

すべてのパラメータを入力する必要はありません

値が提供されなかった場合は null (デフォルトの val がない場合) であり、次のようになります。

使用するパターンは次のとおりです。

select * from myTable where 

(  @companyId  IS NULL  OR ( companyId = @companyId ))
and
 ( @Name IS NULL  OR ( Name  = @Name ))
and
...

また

 (   companyId  = isnull(@companyId,companyId ))
      and
  (    Name = isnull(@Name ,Name ))
      and

    ...

ここでも合体を使用できますが、遅くなります。(よりもnull)

于 2012-04-25T09:04:16.733 に答える