2010-11-25 139 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