2010-02-04 106 views
2

對於我的Realty網站,我還想從兩個下拉列表MinPriceMaxPrice(這兩個下拉列表還包含用戶請求的價格範圍內的屬性字段值)。SQL查詢屬於最小值和最大值的記錄範圍

以下是我迄今爲止的聲明。除上述要求外,它正在正常工作。

SELECT busname, email, render_pic, 
     area,logo, url, email, map, 
     description, tag, catch_phrase, region 
FROM Results 
WHERE STYLE LIKE 'varStyle' 
    AND REGION LIKE 'varRegion' 
    AND BEDROOMS LIKE 'varBedrooms' 
    AND BATHROOMS LIKE 'varBathrooms' 
ORDER BY ID desc 

非常感謝你提前!

回答

2
and Price between @minprice and @maxprice 

編輯:爲了掩蓋什麼@paxdiablo是在暗示,雖然我不知道爲什麼一所房子將有除了價格什麼...

and (minprice between @minprice and @maxprice 
or maxprice between @minprice and @maxprice 
or @minprice between minprice and maxprice) 
+0

不確定這是對的,@Coov。 OP似乎在尋找兩個重疊的範圍,而不是一個範圍內的單個數據點。因爲房子有最低和最高成本,你正在尋找可以支付最低/最高金額的房子。 – paxdiablo 2010-02-04 04:23:21

+0

@paxdiablo - 我想你可能是對的,如果你把「(也是字段值)」定義爲表中的列值。 – 2010-02-04 04:32:14

+0

房子有最低/最高價格的原因是因爲房地產經紀人只給出指示性定價,而不是固定價格。這是標準做法,因爲1到2百萬的房屋零售將被買方看作是1米,而賣方則認爲是2米,然後由經紀人把它們放在一起。 – paxdiablo 2010-02-04 06:26:28

0

有重疊的兩個範圍(在輸入和記錄)是一個小ticky但你應該嘗試:

SELECT 
    busname, ... 
FROM Results 
WHERE STYLE LIKE &varStyle 
    AND REGION LIKE &varRegion 
    AND BEDROOMS LIKE &varBedrooms 
    AND BATHROOMS LIKE &varBathrooms 
    AND (
     MINPRICE between &MinPrice and &MaxPrice 
     OR MAXPRICE between &MinPrice and &MaxPrice 
     OR (MINPRICE <= &MinPrice AND MAXPRICE >= &MaxPrice) 
) 
ORDER BY ID desc 

,如果你的行最小/最大範圍內的任何價格搜索分鐘內/最大範圍內(包括當行最小/最大是完全內這將匹配搜索範圍),或者如果整個搜索範圍在您的行範圍內,這是我認爲你以後。

另外,您可能想重新考慮使用LIKE,除非那些var...變量實際上允許使用通配符。一些不太智能的DBMS'不能自動將它們轉換成更有效的=操作。

0
SELECT busname, email, render_pic, 
     area,logo, url, email, map, 
     description, tag, catch_phrase, region 
FROM Results 
WHERE STYLE LIKE 'varStyle' 
    AND REGION LIKE 'varRegion' 
    AND BEDROOMS LIKE 'varBedrooms' 
    AND BATHROOMS LIKE 'varBathrooms' 
    AND Price between varMinPrice and varMaxPrice 
ORDER BY ID desc 
0

這是我將如何執行這種類型的查詢:因爲他們都默認爲空的存儲過程

題庫由用戶別的,他們不離開指定值選擇下面。我猜對了參數類型,但你明白了。還添加了「%」,以便「區域」和「風格」是狂野分子。

以下查詢將返回基於none,所提供參數的任意或所有組合的匹配結果。

CREATE PROCEDURE [dbo].[spGetProperties] 
     @style  VARCHAR(50) = NULL 
    ,@region VARCHAR(50) = NULL 
    ,@bedrooms TINYINT  = NULL 
    ,@bathrooms TINYINT  = NULL 
    ,@minPrice INT   = NULL 
    ,@maxPrice INT   = NULL  
AS 
BEGIN 

    SELECT busname, email, render_pic, 
     area,logo, url, email, map, 
     description, tag, catch_phrase, region 
    FROM Results 
     WHERE (@style IS NULL OR STYLE LIKE '%' + @style + '%') 
       AND (@region IS NULL OR REGION LIKE '%' + @region + '%') 
       AND (@bedrooms IS NULL OR BEDROOMS >= @bedrooms) 
       AND (@bathrooms IS NULL OR BATHROOMS >= @bathrooms) 
       AND (@minPrice IS NULL OR MINPRICE >= @minPrice) 
       AND (@maxPrice IS NULL OR MAXPRICE <= @maxPrice) 
    ORDER BY ID desc 

END 
相關問題