PDA

View Full Version : جستجو در کل دیتا بیس



b.paseban
سه شنبه 12 بهمن 1389, 13:08 عصر
سلام خدمت تمامی دوستان.
من می خواستم بدونم چطوری میشه توی چند تا جدمل از دیتا بیس یه جستجو انجام داد.
البته خودم یه کد نوشتم که مطمئنا خیلی خوب نیست.
اگه میشه راهنمایی کنید این کد رو کامل کنم.
باتشکر از همه.



ALTER PROCEDURE [dbo].[Searchtbls]
@keyword Nvarchar(300)
AS
SELECT DISTINCT Article_Article.Title
FROM Article_Article
WHERE (Article_Article.Title LIKE N'%' + @keyword + N'%')

SELECT DISTINCT News_News.Title
FROM News_News
WHERE (News_News.Title LIKE N'%' + @keyword + N'%')

SELECT DISTINCT MultimediaNews_category.Title
FROM MultimediaNews_category
WHERE (MultimediaNews_category.Title LIKE N'%' + @keyword + N'%')

RETURN

من میخوام توی سه تا جدول بالا جستجو انجام بدم و فیلد Title , کلید اصلی این جداول رو بدست بیارم.

b.paseban
سه شنبه 12 بهمن 1389, 14:34 عصر
پیدا کردم :



ALTER PROCEDURE [dbo].[Searchtbls]
@keyword Nvarchar(300)
AS
SELECT DISTINCT Article_Article.Title
FROM Article_Article
WHERE (Article_Article.Title LIKE N'%' + @keyword + N'%')
UNION
SELECT DISTINCT News_News.Title
FROM News_News
WHERE (News_News.Title LIKE N'%' + @keyword + N'%')
UNION
SELECT DISTINCT MultimediaNews_category.Title
FROM MultimediaNews_category
WHERE (MultimediaNews_category.Title LIKE N'%' + @keyword + N'%')
RETURN

m_omrani
سه شنبه 12 بهمن 1389, 19:16 عصر
به جای UNION بنویسید UNION ALL. چون UNION یعنی رکورد تکراری نداشته باشید. اما UNION ALL یعنی همه رکوردها. لذا وقت SQL Server صرف حذف رکوردهای تکراری نمی شه و سریع تر نتیجه رو پیدا می کنه.