PDA

View Full Version : join چند جدول



فاطمه وطن دوست
دوشنبه 07 بهمن 1387, 19:09 عصر
سلام

میشه چند تا جدول ( بیشتر از 2 تا ) رو با هم join کرد ؟

AminSobati
چهارشنبه 09 بهمن 1387, 10:17 صبح
سلام دوست عزیزم،
چرا نمیشه! مشکلتون رو دقیق تر مطرح بفرمایید

فاطمه وطن دوست
پنج شنبه 10 بهمن 1387, 11:13 صبح
سلام

تصویر زیر گویای ساختار جداول میباشد .


با توجه به تصویر میخوام جداول A,B,C,D رو با هم ادغام کنم ، البته میخوام به جای فیلد ID



جدول D ، فیلد Name از جدول F و به جای فیلد IdM از جدول D فیلد Markaz از E در گزارش درج

شود.

دستور اس کیو ال :





.Source = "Select * From ((A Inner Join B On B.IdP=A.IdP) Inner Join C On C.Idp=A.IdP) Inner Join (Select * From D d1 Inner Join E e1 On d1.IdM=e1.IdM) On e1.Idp=A.IdP"


از بخش مشخص شده ایراد میگیره . دستور صحیح چیه؟

gh7309
پنج شنبه 10 بهمن 1387, 20:23 عصر
سلام


Select From A,B,C,D Where (B.IdP=A.IdP) And (C.Idp=A.IdP) And (d1.IdM=e1.IdM) And e1.Idp=A.IdP

براي انتخاب فيلد از بين جدول هاي join شده نامه جدول nametabel.namefeild را بعد از select مي گذاري.

فاطمه وطن دوست
پنج شنبه 10 بهمن 1387, 21:07 عصر
سلام

فکر کنم این دستورم جواب بده ولی آیا از لحاظ سرعت مشکلی نداره ؟




"Select A.*,B.*,C.*,D.*,E.Markaz ,F.Name From A, B, C,D,E,F WHERE A.IdP=B.IdP And
A.IdP=C.IdP AND A.IdP=D.IdP And E.IdM=D.IdM And F.Id=D.Id




من تو یه پی دی اف خوندم استفاده از عبارت join باعث افزایش سرعت در ساخت کوئری هایی این چنینی میشه این گفته درسته ؟

و همچنین گفته بود ( تصویر رو مطالعه کنید )


__ تفاوت استفاده از کلمه Join در دستورات Sql رو با انتخابی که در بالا گفتم رو برام تشریح کنید ؟

AminSobati
پنج شنبه 10 بهمن 1387, 22:44 عصر
دوست عزیزم،
استفاده از نام چند جدول در قسمت FROM در حقیقت کاری منسوخ (یا بهتره بگیم Join قدیمی) به حساب میاد. استفاده از عبارت Join استاندارد ANSI هستش.
به سختی میشه گفت ANSI Join سرعت بیشتری داره چون SQL Server میتونه Joinهای قدیمی رو هم به کار بگیره. اما این احتمال وجود داره که Hint بیشتری به Query Optimizer بده

فاطمه وطن دوست
جمعه 11 بهمن 1387, 09:45 صبح
ای کاش در تکمیل صحبتاتون کد رو هم می نوشتید .( البته خواهش میکنم )

AminSobati
جمعه 11 بهمن 1387, 18:48 عصر
select * from t1 join t2
on t1.id=t2.id
join t3
on t2.id=t3.id
join t4
on t3.id=t4.id

البته بستگی به این داره که کدام جداول با هم Join میشن