PDA

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



rezaei manesh
دوشنبه 01 خرداد 1391, 12:11 عصر
سلام
من 3 تا فیلد دارم 2 تا ای دی و یکی مقدار
حالا می خوام کاربر یکسری مقادیر رو تو این مقادیر جستجو کنه به این شکل که هر مقدار جستجو باید تو همون ای دی های مربوط به اون مقدار جستجو بشه و با بقیه مقادیر and بشه

دستور زیر برای or درست کار می کنه اما من and می خوام


(filedname="yes" and FiledID=1 ) or (filedname="yes" and FiledID=3) or (filedname="test" and FiledID=4)

FiledID مشخص می کنه که اون مقدار فقط تو ایتم مربوطه جستجو بشه

mohsen.net
دوشنبه 01 خرداد 1391, 18:43 عصر
سلام
یک ذره بیشتر توضیح می دهی؟ خیلی گنگ گفتی
یک جدول بساز و بگو ازش چی می خواهی

rezaei manesh
دوشنبه 01 خرداد 1391, 20:04 عصر
سلام
ممنون از توجه شما
از جداولم و نحوه جستجو یه جدول ساختم ضمیمه کردم

Reza_Yarahmadi
دوشنبه 01 خرداد 1391, 20:38 عصر
در مورد ساختار جدولتون یه تجدید نظر کنید!!
در صورت ثابت بودن 4 پارامتر میشه بصورت زیر عمل کرد
Declare @Tbl_1 Table (
ID int,
FieldID Int,
FieldValue nvarchar(50)
)

Insert Into @Tbl_1 Values (1, 1, 'no')
Insert Into @Tbl_1 Values (1, 2, 'yes')
Insert Into @Tbl_1 Values (2, 1, 'yes')
Insert Into @Tbl_1 Values (2, 4, 'speed')
Insert Into @Tbl_1 Values (1, 3, 'kara')
Insert Into @Tbl_1 Values (2, 3, 'kara')

Declare @Param1 nvarchar(max),
@Param2 nvarchar(max),
@Param3 nvarchar(max),
@Param4 nvarchar(max)



Set @Param1 = 'yes'
Set @Param3 = 'kara'


Declare @Count int
Set @Count = 0
if(@Param1 IS NOT NULL)
Set @Count = @Count + 1
if(@Param2 IS NOT NULL)
Set @Count = @Count + 1
if(@Param3 IS NOT NULL)
Set @Count = @Count + 1
if(@Param4 IS NOT NULL)
Set @Count = @Count + 1

;With Res as(
Select ID From @Tbl_1 Where FieldID = 1 AND FieldValue = @Param1
Union All
Select ID From @Tbl_1 Where FieldID = 2 AND FieldValue = @Param2
Union All
Select ID From @Tbl_1 Where FieldID = 3 AND FieldValue = @Param3
Union All
Select ID From @Tbl_1 Where FieldID = 4 AND FieldValue = @Param4
)
Select ID From Res Group by ID Having COUNT(*) = @Count

ولی در صورت متغیر بودن تعداد پارامترها باید نام فیلدها رو هم پاس بدید و با جدول دوم جوین کنید و ...

rezaei manesh
سه شنبه 02 خرداد 1391, 20:49 عصر
سلام از جوابتون خیلی ممنونم
تعداد پارامتر ها از یه دونه تا 50 تا می تونه باشه
اگه میشه بیشتر توضیح بدین

rezaei manesh
شنبه 06 خرداد 1391, 12:36 عصر
سلام
با کمک روش دوستمون حلش کردم مشکل اصلی من این بود که نمی خواستم استرینگ طولانی به سمت سرور پاس بدم که مشکل رو با یه کلک حل کردم