ورود

View Full Version : مشکل در مورد نتایج این query



zahra_zapata
جمعه 19 بهمن 1386, 05:09 صبح
با سلام،
هدف از query ‍زیر این بود که بر حسب هر یک از پارامترهای انتخاب شده جواب داشته باشم.حتی در صورتی که هیچ یک ازاین پارامترها انتخاب نشود یا کل پارامترها انتخاب شود، نتیجه درستی بدهد.
3 تا پارامتر: 1-وضعیت دستگاه
2-نوع دستگاه مرتبط
3-نام مرکز
جداول: GL_V_MARKAZ_VIEW وGL_V_DSTGH_MRTBT_VAZIAT
من برای 7 حالت می خواستم جواب بگیرم ولی نتیجه مطلوب رو نگرفتم.(مشکل null بودن پارامتر یا نبودن )

select count(*) as tedad,GVT.MRKZ_NAM_MARKAZ,GVT_MRKZ1_NAM_MARKAZ,GVT _MRKZ_ADDRESS
,GVT_MRKZ_TELL
FROM GL_V_MRKZ_VIEW GVT,GL_V_DSTGH_MRTBT_VAZIAT GDM
WHERE
GVT.MRKZ_ID=GDM.GTSM_MRKZ_ID AND
((GDM.NDMR_ID=$P{NOE_DASTGAH_MORTABET} OR $P{NOE_DASTGAH_MORTABET} IS NULL)
AND (GDM_VZMP_ID=$P{VAZIAT_MANBA} OR $P{VAZIAT_MANBA) IS
NULL)
AND GDM_MRKZ_NAM_MARKAZ=$P{NAM_MARKAZ} OR $P{NAM_MARKAZ ) IS
NULL)
GROUP BY (MRKZ_NAM_MARKAZ,GVT_MRKZ1_NAM_MARKAZ,GVT_MRKZ_ADD RESS
,GVT_MRKZ_TELL
))

میخوام انتخاب پارامتر OPTIONAL باشه(مثلا برای مرکز 1 با وضعیت xو نوع دستگاه NULL(نوع دستگاه مهم نباشد)،نتیجه درستی بده یا هر سه پارامتر NULL باشه و همه رو بده)
قابل ذکر است که این QUERY رو در نرم افزار OPENREPORTS که تحت جاواست نوشتم .ولی در مورد همه حالت های ممکنه درست جواب نمی ده. در این نرم افزار حتی در کدش که oPENSOURCE هست دست زدم و مقدار پیش فرض پارامتر رو برای NULL بودن -1قرار دادم ولی برای همه حالت ها جواب نداد.


در ORACLEچه جور می تونم این مشکل رو برطرف کنم که انتخاب نشدن یا شدن چندین پارامتر
NULL OR NOT NULL
قابل فهم باشه.ممنون می شم جوامو بدین و راهنماییم کنید.

aidin300
جمعه 19 بهمن 1386, 09:09 صبح
از Dynamic SQL استفاده کن

hpkarimi110
جمعه 19 بهمن 1386, 23:52 عصر
با سلام
من در query ها از nvl() استفاده میکنم
(GDM_VZMP_ID=$P{VAZIAT_MANBA} OR $P{VAZIAT_MANBA) IS NULL)

میشه :
GDM_VZMP_ID=nvl(VAZIAT_MANBA,GDM_VZMP_ID
(

:متفکر: