PDA

View Full Version : دستور sql برای انتخاب اطلاعات از چند جدول



na3er-faraji
سه شنبه 04 مرداد 1390, 10:34 صبح
سلام. 4 تا جدول دارم.
MortabeteJoze
Kol
Moein
Tafzili
میخام در جدول MortabeteJoze به ترتیب زیر چک کنیم .
اگر در MortabeteJoze فیلد TafziliIdنال نبود. از جدول Tafzili فیلدهای name رو استخراج کنه که MortabeteJoze.TafziliId=Tafzili.TafziliId

در غیر این صورت اگر در MortabeteJoze فیلد MoeinId نال نبود. از جدول Moein فیلدهای name رو استخراج کنه که MortabeteJoze.MoeinId =Moein .MoeinId

در غیر این صورت اگر در MortabeteJoze فیلد KolId نال نبود. از جدول Kol فیلدهای name رو استخراج کنه که MortabeteJoze.KolId=Kol.KolId

این دستور برای تک نک سطرها اجرا میشه. اگه شرط اول برقرار بود بره سطر بعد والا شرط دوم رو چک کنه. اگه شرط دوم هم برقرار نبود شرط سوم چک میشه. شزط ها به همون ترتیب اولویتی که نوشتم فقط یه کدومشون باید اجرا باشه!!! امیذوارم منظورم رو درست فهمونده باشم!!!!

یوسف زالی
سه شنبه 04 مرداد 1390, 11:21 صبح
سلام.
برای این کار پس از نوشتن join مورد نظر از تابع coalesce استفاده کنید.
این تابع اولین مقدار غیر نال را بر می گرداند.
مثال خیلی خیلی ساده:

select coalesce(null, null, null, 120, null) as X

na3er-faraji
سه شنبه 04 مرداد 1390, 14:34 عصر
ببخشید این دستور کمکی به من نکرد. مشکل من با تشخیص نال بودن نیست مشکلم اینه که چه طوری با توجه به شرط همه خزوجی ها رو با هم تو یه جدول ادغام کنم؟؟؟

یوسف زالی
سه شنبه 04 مرداد 1390, 15:43 عصر
ببینید دوست من منظور من این جوری بود:

select coalesce(Tafzili.name, Moein.name, Kol.name)
from MortabeteJoze
left join Tafzili on Tafzili.TafziliID = MortabeteJoze.TafziliID
left join Moein on MortabeteJoze.MoeinID = Moein.MoeinID
left join Kol on MortabeteJoze.KolID = Kol.KolID


البته من خیلی متوجه نشدم چرا درخت حسابتون این شکلی هست.
اما ساده ترین صورتی که تونستم درش بیارم این بود.