برگزیده های پرشین تولز

SQL Select from Array

Graveworm

Registered User
تاریخ عضویت
23 می 2005
نوشته‌ها
1,071
لایک‌ها
12
محل سکونت
Tehran
خوب من به این مساله تا حالا بر نخورده بودم،

چجوری میشه با استفاده از SQL این کار رو کرد :

من یه سری اسم رو با استفاده از یه select از یک جدول میخونم. میخوام تمامی text هایی که این اسامی در اونها به کار رفته ، از یک جدول دیگه بخونم.

کد:
Select TXTBODY from tbl1 where txtbody like (select names from tbl2 where ID = blabla)

اینی که نوشتم درست نیست ها! خواستم منظورم رو بگیرید.
انگار که یک آرایه داشته باشیم . بخوایم یه فیلد رو انتحاب کنیم به شرطی که یکی از اعضای آرایه توش باشه !


از IN فکر نکنم بشه استفاده کرد ..
راه حلی به ذهنتون میرسه ؟

راه حل آخرش استفاده از SELECT به تعداد لازم هست .. اما جز این آیا راهی هست ؟

نفر اول یه شمش طلا :D :rolleyes:
 

DoctorX

Registered User
تاریخ عضویت
13 ژانویه 2006
نوشته‌ها
333
لایک‌ها
27
محل سکونت
Tehran
من یه سری اسم رو با استفاده از یه select از یک جدول میخونم. میخوام تمامی text هایی که این اسامی در اونها به کار رفته ، از یک جدول دیگه بخونم.

نفر اول یه شمش طلا :D :rolleyes:

کافیه روی اون اسم ها یه کرسر بزنی و در هر بار اجرای کرسر برای هر نام، text هایی که این اسامی در اونها به کار رفته ، از یک جدول دیگه Select و توی یه TempTable دیگه Insert کنی و بعد از اتمام کرسر یه Select از TempTable بگیری ... همین !

 

alireza sh

مدیر بازنشسته
تاریخ عضویت
2 ژانویه 2006
نوشته‌ها
2,775
لایک‌ها
70
سن
40
محل سکونت
نصف جهان
سوال جالبیه

این دستور را داشته باشد
کد:
Select TXTBODY from tbl1 where txtbody [B]IN[/B] (select names from tbl2 where ID = blabla)

البته این کار باعث میشه دقیق جستجو بشه

نمیدونم که آیا عملگر like که نوشتین ، درست جواب بده یا نه .
 

mazoolagh

Registered User
تاریخ عضویت
10 آپریل 2004
نوشته‌ها
2,938
لایک‌ها
7
کد:
Select TXTBODY 
from tbl1
where txtbody [COLOR="Red"]IN[/COLOR]
(select names from tbl2 where ID [COLOR="red"]LIKE[/COLOR] blabla)
 

Hamido-san

Registered User
تاریخ عضویت
17 مارس 2007
نوشته‌ها
105
لایک‌ها
0
سن
42
محل سکونت
Tehran
اگه منظورت اينه که "رديف هايی از Table1 رو ميخوايم که فيلد txtBody شون برابر يکی از مقادير فيلد name از آرايه هست" و منظور از "آرايه" هم يه جدول ديگه، مثلا Table2 باشه ميتونی اينجوری بنويسی ( همونطور که ar.shirazi-san گفت ) :
کد:
select * from Table1 where txtBody in (
select name from Table2
)
اين کار از join کردن دو تا table خيلی بهتره، حتی اگه به نظر بياد execution plan شون يکيه
301.gif
...
ولی اگه منظور اينه که "رديف هايی از Table1 رو ميخوايم که فيلد txtBody شون شبيه يکی مقادير فيلد name از Table2 هست" فکر کنم راهی بجز join کردن نداشته باشيم :
کد:
select Table1.* from Table1, Table2
where Table1.txtBody like Table2.name
راستشو بخوای من آخر نفهميدم اون مقدار "blabla" اون وسط چيکار ميکنه يا به چه دردی ميخوره
270.gif
...
ضمنا بدين وسيله از DoctorX-kun خواهش ميشه با اون راه حل های "علمی تخيلی" شون طفلک های مردم رو از راه راست منحرف نکنن
bore.gif
( آخه من به تو چی بگم padawan ؟ کرسر ؟! بجای in ؟!؟!؟
wow.gif
)
 

یزدانی

Registered User
تاریخ عضویت
13 آپریل 2012
نوشته‌ها
74
لایک‌ها
20
محل سکونت
رومو..!
.................
 

elna

کاربر تازه وارد
تاریخ عضویت
15 سپتامبر 2013
نوشته‌ها
34
لایک‌ها
3
Ban kanid MARAB,BAkoshid MARA
 
بالا