PDA

View Full Version : select تو در تو



saman_itc
جمعه 02 فروردین 1387, 14:44 عصر
با سلام
من چهار تا جدول دارم
آیا میشه تو select شرط واسه یه فیلد از جدول دیگه ای تو همین بانکم داشته باشم
من می تونستم کد مورد نظرم تو جدولم بزارم ولی برای افزوده گی نداشته باشم این کارو کردم؟؟؟؟؟؟

bad_boy_2007
شنبه 03 فروردین 1387, 23:42 عصر
با سلام
من چهار تا جدول دارم
آیا میشه تو select شرط واسه یه فیلد از جدول دیگه ای تو همین بانکم داشته باشم
من می تونستم کد مورد نظرم تو جدولم بزارم ولی برای افزوده گی نداشته باشم این کارو کردم؟؟؟؟؟؟
جدولت رو ضمیمه کن و کوئری مورد نظرت رو هم بگو کار ساده ای هست

saman_itc
یک شنبه 04 فروردین 1387, 02:52 صبح
سه تا جدول
جدول اول مشخصات سند رسید شالی کوبی که فیلد ID_Shali داره
جدول دوم سند های تبدیل .که هر رسید شالی می تونه چند بار تبدیل بشه.یا یه بار.فیلد مورد نظر ID_tabdil
جدول سوم .هر ID_Tabdil یه سری مقادیر ریز برنج ها تو یه جدول دیگه ذخیره میشه.
فیلد هاش .ID_tabdil و Vazn_riz
حالا من میخواهم همه Vazn_riz های یه رسید شالی رو Select کنم

bad_boy_2007
یک شنبه 04 فروردین 1387, 15:20 عصر
فکر کنم منظورت از Vazn_riz همون فیلد Riz از جدول سوم باشه .
واسه اینکه دقیقا متوجه بشی کامل توضیح میدم
اول از همه یه کوئری ایجاد کنی که باهاش بتونی Riz هایی رو کا دارای IDT بخصوصی هستند رو در بیاری مثال زیر میتونی Riz هایی با IDT 2 و 3 رو بازیابی کنه :


SELECT Riz
FROM Riz_T
Where IDT in(1,2)

حالا کافیه بجای 2 و 3 کوئری ای بنویسی که یک ID_Shali.Factor_SH رو بگیره و تعدادی IDT رو بازیابی کنه مثال زیر این کار رو میکنه :



SELECT A_Tabdil.ID
FROM Factor_Shali INNER JOIN A_Tabdil ON Factor_Shali.ID = A_Tabdil.ID_Shali
Where Factor_Shali.FactorSH=10


تمام !!! حالا کوئری ها رو یکی کن :



SELECT Riz
FROM Riz_T
Where IDT in(
SELECT A_Tabdil.ID
FROM Factor_Shali INNER JOIN A_Tabdil ON Factor_Shali.ID = A_Tabdil.ID_Shali
Where Factor_Shali.FactorSH=10
)


کوئری فوق کلیه Riz هایی رو بر میگردونه که FactorSh آنها برابر 10 باشد
نتیجه اخلاقی اینکه برای نوشتن کوئری های پیچیده ، کوئری رو به اجزای ریزتر تبدیل کنید و در نهایت همه رو یکپارچه کنید !!!!

bad_boy_2007
یک شنبه 04 فروردین 1387, 15:23 عصر
برای اطلاع بیشتر در مورد نحوه نوشتن دستورات SQL (فرق زیادی بین نوشتن دستورات SQL برای Access و SQLServer نیست) یه نگاهی به لینک زیر بنداز :


http://forum.p30world.com/showthread.php?p=1039555
http://forum.p30world.com/showthread.php?p=1039555

saman_itc
یک شنبه 04 فروردین 1387, 16:42 عصر
با تشکر از راهنمایتون
من میخوام بعد این برنامه بانکم تغییر بدم و با Sql sever2005 تو vb.net کار کنم.
اول باید ارتباطش ردیف کنم.بعد هم متغیراشو!!
شما چه منابع رو پیشنهاد میکنید!!

bad_boy_2007
یک شنبه 04 فروردین 1387, 17:27 عصر
با تشکر از راهنمایتون
من میخوام بعد این برنامه بانکم تغییر بدم و با Sql sever2005 تو vb.net کار کنم.
اول باید ارتباطش ردیف کنم.بعد هم متغیراشو!!
شما چه منابع رو پیشنهاد میکنید!!

برای دات نت کتاب خیلی زیاده ولی واسه SQL Server 2005 فکر کنم کتاب انتشارات کانون نشر علوم با عنوان "راهنمای جامع SQL Server" کتاب بسیار خوبیه بخصوص واسه کسایی که بخوان از صفر شروع کنن (مثل خود من که واسم خیلی عالی بود)

saman_itc
چهارشنبه 14 فروردین 1387, 10:28 صبح
مشکل من حل نشد!!!!!!!!!!!!!!!!!11

خطا میده تو IN

اینم جواب نمیده ولی فکر میکنم نزدیک تره



SELECT Riz
FROM Riz_t
WHERE idt IN
SELECT A_Tabdil.Id
FROM A_Tabdil
WHERE Factor_shali.Id = A_Tabdil.ID_shali


ما IDT یا (a_tabdil.id)رو میخواهییم که تو جدول A_tabdil فیلد id_shali شون با هم برابر باشند

اگه ممکنه از INNER JOIN استفاده نکنید از همین روشی که من نوشتم بنویسین

bad_boy_2007
پنج شنبه 15 فروردین 1387, 22:53 عصر
مشکل من حل نشد!!!!!!!!!!!!!!!!!11

خطا میده تو IN

اینم جواب نمیده ولی فکر میکنم نزدیک تره



SELECT Riz
FROM Riz_t
WHERE idt IN
SELECT A_Tabdil.Id
FROM A_Tabdil
WHERE Factor_shali.Id = A_Tabdil.ID_shali
ما IDT یا (a_tabdil.id)رو میخواهییم که تو جدول A_tabdil فیلد id_shali شون با هم برابر باشند

اگه ممکنه از INNER JOIN استفاده نکنید از همین روشی که من نوشتم بنویسین


عبارت بعد از IN را داخل پرانتز باز و بسته قرار بده مشکلت حل میشه :چشمک:

saman_itc
جمعه 16 فروردین 1387, 16:45 عصر
هیج مقداری بر نمی گردونه

bad_boy_2007
جمعه 16 فروردین 1387, 21:17 عصر
هیج مقداری بر نمی گردونه

دستوراتت رو تک تک تست کن و ببین کدوم یکی مشکل داره ؟