2016-11-22 2 views
0

が、私は4つのテーブルを持っている、SQL Serverのパラメータよりも多くして機能を実行します。作成し

1-dbo.Projects(ID、プロジェクト名、地域、PaymentSystem、location.id、purpose.id、types.idなど)

2- dbo.Locations(ID、ロケーション名)

3- dbo.Purpose(ID、Purposename)

4- dbo.Types(ID、typname)私は

検索基準、この基準iデータベーステーブルのデータで満たされています。場所、目的、タイプには最大値と最小値のテキストボックスもあります。

私はすべてのフィールドと最大、最小値を検索します - 私はこのクエリに達したが、最大と最小を取得したり、フィルタするクエリを逃した:あなたはarea列のフィルタをしたい私の理解から

ALTER FUNCTION SearchProjects (
@location NVARCHAR(50), 
@purpose NVARCHAR(50), 
@type NVARCHAR(50), 
@max nvarchar(50), 
@min nvarchar(50)) 
RETURNS TABLE 
AS 
    RETURN 
    (
    SELECT p.ProjectName, 
     p.Areas, 
     p.PaymentSystem, 
     p.ReceivedDate,  
     p.PropertyClassification, 
     p.ProjectImage,   
     l.LocationName, 
     Pur.PurposeName,    
     t.TypeName 
FROM dbo.Projects AS p 
LEFT JOIN dbo.Locations AS l ON p.LocationID = l.ID  
LEFT JOIN dbo.Purpose pur ON p.PurposeID = pur.ID 
LEFT JOIN dbo.[Types] AS t ON p.TypeID = t.ID 
WHERE UPPER(ISNULL(l.LocationName,N'')) LIKE N'%' + UPPER(@location) + '%' 
AND UPPER(ISNULL(pur.PurposeName,N'')) LIKE N'%' + UPPER(@purpose) + '%' 
AND UPPER(ISNULL(t.TypeName,N'')) LIKE N'%' + UPPER(@type) + '%' 
AND p.Areas like @max 
AND p.Areas like @min 
) 
GO 
SELECT * FROM dbo.SearchProjects('','','','200','250'); 
+1

あなたは何を求めていますか?具体的にしてください。 –

+0

私は最大値と最小値を関数に渡してから、値を持つ領域の列を返します。各レコードの領域の列の値が100から300の場合は、最小値100と最大値200を渡して、すべての結果が一致するようにします。この値を使用して – hashim

+0

[SQL Serverで関数を作成して実行する]の可能な複製(http://stackoverflow.com/questions/40719540/create-and-execute-function-in-sql-server) –

答えて

1

maxmin値のためにあなたは、だからあなたのWHERE条件は以下のようになりますBETWEEN

AND p.Areas BETWEEN @min AND @max 

を使用することによって達成することができた

WHERE 
    UPPER(ISNULL(l.LocationName,N'')) LIKE N'%' + UPPER(@location) + '%' 
    AND UPPER(ISNULL(pur.PurposeName,N'')) LIKE N'%' + UPPER(@purpose) + '%' 
    AND UPPER(ISNULL(t.TypeName,N'')) LIKE N'%' + UPPER(@type) + '%' 
    AND p.Areas BETWEEN @min AND @max 
+0

はいこれは私が必要とする、仕事の良いありがとう – hashim

+0

@ハシムあなたの歓迎。ハッピーコーディング。 –

+0

私はこの行を呼び出すときに何か別のものが必要です。すべての結果を取得します:SELECT FROM dbo.SearchProjects( ''、 ''、 ''、 ''、 ''); – hashim

関連する問題