PDA

View Full Version : استفاده از خروجی یه Select تو Select دیگر



federrer
یک شنبه 28 مرداد 1386, 19:23 عصر
سلام

جدول T1 دو تا فیلد به اسمهای id و name1 داره .
جدول T2 هم دو تا فیلد به اسمهای id و name2 داره .

فرض کنید دو تا دستور Select به این شکل داریم :




strsql1 = "Select name1 From T1 where id =1 ";

strsql2= "Select name2 From T2 where id =1 ";

خروجی هر دستور یه اسم است .

یه جدول دیگه داریم به اسم T که دو تا فیلد n1 و n2 داره و
می خوایم از خروجی دستورهای قبل استفاده کنیم :

ُ

strsql = "Select * From T where n1 ="khorooji strsql1 " AND n2="khorooji strsql2" ";

دستور بالا رو چطور باید بنویسم ؟؟؟؟

mzjahromi
یک شنبه 28 مرداد 1386, 19:47 عصر
Select * From(
Select ... From T1
union all
Select ... from T2
) as tbl1
where name=...

federrer
یک شنبه 28 مرداد 1386, 21:10 عصر
مرسی .

دستوری که نوشتید درسته

من صورت سوال رو یه کم ساده گفتم که حداقل مطمئن شم باید از Union استفاده کنم .

مهندس جون حقیقتش صورت سوال اینجوریه که دستوراتی که تو متغیر های Strsql1 و Strsql2 ریخته میشه تحت شرایط مختلف فرق میکنه

توضیح:

دستور اول رو در نظر بگیرید:


strsql1 = "Select name1 From T1 where id =1 ";

یه کنترل به نام ComboBox1 هست که وقتی گزینه اولش انتخاب میشه Select بالا رو میریزه تو متغیر strsql1 .

حالا اگه گزینه دوم انتخاب بشه اونوقت :


strsql1 = "Select name1 From T1 where id =2 ";


و اگر گزینه سوم انتخاب بشه:


strsql1 = "Select name1 From T1 where id =3 ";


پس با انتخاب هر کدوم از گزینه های ComboBox1 یه دستور Select خاص داخل متغیر Strsql1 ریخته میشه . که خروجیهاشون هم طبیعتا با هم فرق داره

دقیقا برای دستور دوم هم همین داستان تکرار میشه . یعنی یه کنترل ComboBox2 هست که با انتخاب گزینه های مختلفش ، دستورات Select متفاوتی داخل متغیر Strsql2 ریخته میشه !!!!!!!!!

دستوری که نوشتید درسته ولی

اگه میشه طوری تغییرش بدید که بجای نوشتن مستقیم "Select .... From T1" و "Select ... From T2" ، مقدار متغیر های Strsql1 و Strsql2 بطور کلی قرار بگیره که اگه دستورهایی شبیه دستورات فعلی هم تو Strsql1 و Strsql2 بود ، جواب بده

با تشکر

AminSobati
یک شنبه 28 مرداد 1386, 21:23 عصر
ظاهرا باید برین سراغ Dynamic TSQL



DECLARE @x VARCHAR(100)
SET @x='MyTable'
EXEC ('SELECT * FROM '+@x)

federrer
یک شنبه 28 مرداد 1386, 22:27 عصر
توضیحاتم رو تو پست 2 کامل کردم

AminSobati عزیز من هیچی از کد شما نفهمیدم. یه توضیح راجع بش میدید ؟؟

AminSobati
دوشنبه 29 مرداد 1386, 11:23 صبح
http://www.sommarskog.se/dyn-search.html

federrer
دوشنبه 29 مرداد 1386, 21:50 عصر
مرسی . مشکلم رو یه جوری حل کردم D: