2017-03-17 113 views
1

我有UI有搜索功能的地方。搜索中有2個參數。需要SQL查詢輸入

用戶可以搜索的任一兩個參數來獲得的結果(即,或者它可以爲null)

我有在越來越困難寫的確切SQL(SP)的值,當一個一片空白。

例如如下:

declare @param1, @param2 

create table #Ids 
(
    Id bigint, 
    Name varchar(10) 
) 

--Inserting multiple ids in my temp table 
IF @param1 IS NOT NULL 
BEGIN 
    INSERT INTO #Ids (Id, Name) 
     SELECT DISTINCT Id, Name 
     FROM MainIdTable I 
     WHERE (I.Name = @param1) 
END 

SELECT 
    I.Name, S.ID, S.Value 
FROM 
    SecondTable S 
JOIN 
    #Ids I ON S.Id = P.Id 
WHERE 
    S.Date = '2012-01-06' 
    AND s.tempId = ISNULL(@param2, p.tempId) 
  • 如果用戶輸入param1值,如果用戶輸入兩者param1param2值搜索工作正常
  • ,那麼它也能正常工作

但是,如果用戶未輸入param1值,但只輸入param2值,則搜索不起作用。

我認爲這是因爲我的臨時表是空的,當我們進行連接時,它什麼都不返回。

任何解決方法,以獲得此工作?

感謝

+0

標記您正在使用的dbms。該代碼是特定於產品的。 – jarlh

+0

使用'LEFT JOIN' – JohnHC

+0

左連接會給我所有的行,而我只想匹配的行 – user1563677

回答

0
Select I.Name, S.ID, S.Value from 
    SecondTable S 
    LEFT JOIN #Ids I on S.Id = P.Id 
    where S.Date = '2012-01-06' 
    and s.tempId = isnull(@param2, p.tempId) 

你應該使用左這裏加入。

+0

左連接會給我所有的行,而我只需要匹配的行。 – user1563677