حمیدرضاصادقیان
پنج شنبه 26 مهر 1386, 20:55 عصر
سلام خدمت اساتید.من دو تا جدول دارم.یکی حسابهای معین در آن ذخیره میشه یکی حسابهای تفصیلی.بعضی مواقع ما دربرنامه حساب معادل تعریف میکنیم به این صورت که چند حساب تفصیلی قبلا تعریف شده و ما نیاز داریم در چند حساب معین دیگه از اون حسابها استفاده کنیم.به همین خاطر این امکان رو گذاشتیم که کاربر با انتخاب حساب کل و معین مربوطه لیست تفصیلی های اون حساب رو در این حساب معین نیز مشاهده کنه.
حالا در پرینت حساب تفصیلی ما نیاز داریم حسابهای معین که دارای حساب تفصیلی هستند نمایش داده بشند.ولی این حسابهای معین که دارای حساب معادل هستند فقط در جدول معین هستند و دو ستون دیگر هست که حسابهای کل و معین معادل اونو مشاهده میکنه.
من کد زیر رو برای اینکار نوشتم و به راحتی مشکلم حل شد.میخواستم ببینم ایا میشه بهتر از این نوشتش.یا راه قشنگتری هم هست که از outerjoin استفاده نکنم.؟
Select tf.Kol_n,tf.moen_n,tf.Tafzil_n,tf.tafzil_c,mn.kl1, mn.mn1,mn.kol_n,mn.moen_n
,tafzil_c=case
when tf.kol_n is null then ' این حساب معادل کل ' +cast(mn.kl1 as varchar(5))+' و معین '+cast(mn.mn1 as varchar(3))+'است'
end
from f_moein mn
left outer join f_tafzil tf
on tf.kol_n=mn.kol_n and tf.moen_n=mn.moen_n
where mn.kl1>0 or tf.kol_n is not null
حالا در پرینت حساب تفصیلی ما نیاز داریم حسابهای معین که دارای حساب تفصیلی هستند نمایش داده بشند.ولی این حسابهای معین که دارای حساب معادل هستند فقط در جدول معین هستند و دو ستون دیگر هست که حسابهای کل و معین معادل اونو مشاهده میکنه.
من کد زیر رو برای اینکار نوشتم و به راحتی مشکلم حل شد.میخواستم ببینم ایا میشه بهتر از این نوشتش.یا راه قشنگتری هم هست که از outerjoin استفاده نکنم.؟
Select tf.Kol_n,tf.moen_n,tf.Tafzil_n,tf.tafzil_c,mn.kl1, mn.mn1,mn.kol_n,mn.moen_n
,tafzil_c=case
when tf.kol_n is null then ' این حساب معادل کل ' +cast(mn.kl1 as varchar(5))+' و معین '+cast(mn.mn1 as varchar(3))+'است'
end
from f_moein mn
left outer join f_tafzil tf
on tf.kol_n=mn.kol_n and tf.moen_n=mn.moen_n
where mn.kl1>0 or tf.kol_n is not null