2010-11-25 136 views
0

我正在嘗試構建搜索存儲過程。我想搜索多個表並返回與應用程序相關的任何內容。現在我正在用兩張桌子工作。 dbo.Media中有5條記錄,dbo.Sites有1條記錄。當我運行我的查詢時,返回5個結果,但所有行數據都來自我的1條記錄dbo.Sites表。這裏是我的SQL如何搜索/查詢多個表以返回通用結果?

SELECT 
CASE 
    WHEN D.Id IS NOT NULL THEN D.Id 
    WHEN M.Id IS NOT NULL THEN M.Id    
END AS Id, 
CASE 
    WHEN D.Id IS NOT NULL THEN D.Name 
    WHEN M.Id IS NOT NULL THEN M.Title 
END AS Title, 
CASE 
    WHEN D.Id IS NOT NULL THEN LEFT (D.[Description], 100) 
    WHEN M.Id IS NOT NULL THEN LEFT (M.[Description], 100) 
END AS Content, 
CASE 
    WHEN D.Id IS NOT NULL THEN D.WebUserId 
    WHEN M.Id IS NOT NULL THEN M.WebUserId 
    ELSE '' 
END AS WebUserId 

FROM dbo.Sites D, dbo.Media M 

WHERE (D.Status = 1 AND D.Name LIKE '%wre%') OR (M.Status = 1 AND M.Title LIKE '%wre%') 
+1

要麼你可以得到這一切成爲UNION或UNION ALL語句,或者你必須填寫一個臨時表結果一步一步,然後返回臨時結果的內容桌子打回來 – 2010-11-25 21:38:03

回答

1
SELECT Id, Name as Title, LEFT ([Description], 100) as Content, WebUserId 
FROM dbo.DiveSites 
WHERE Status = 1 
    AND Name LIKE '%wre%' 
UNION ALL  
SELECT Id, Title, LEFT ([Description], 100), WebUserId 
FROM dbo.Media 
WHERE Status = 1 
    AND Title LIKE '%wre%' 
+0

完美。謝謝。 – Matt 2010-11-26 22:44:26