मैंने एक प्रश्न लिखा था जिसका उपयोग मैं शीर्ष ऑरेकल में करता हूं, जिसमें मैंने फ़िल्टर जोड़े हैं, लेकिन जब मैं एक तिथि चयन जोड़ता हूं तो यह क्वेरी काम नहीं करती है (हालांकि कोई वाक्यविन्यास त्रुटियां नहीं हैं)। मैं मदद के लिए आभारी रहूंगा

select eb.ID,
       eb.NAME,
       eb.TEMP,
       eb.ID_TRANS,
       eb.CR_DATE,
       eb.DATE_TMRT,
       ah.name as Silo_name,
       we.name as ORGANIZATIONS,
       ad.name as item
              from TEMPR_SILO  eb
              left join  ORGANIZATIONS we on  eb.ORGANIZATIONS =  we.id
              left join  ITEM_CRITICALTEMP ad on  ad.id <> 0 
              left join  silo ah  on  ah.id = ad.id_silo 
where   (:P115_ORG is null or we.name = :P115_ORG) 
and (:P115_SILO_NAME is null or  ah.name = :P115_SILO_NAME) 
and  to_timestamp(eb.DATE_TMRT)  between to_timestamp(:P115_DATA1,'dd.mm.yyyy') and to_timestamp(:P115_DATA2,'dd.mm.yyyy') 
------ when "OR" is missing then everything works ---
or   (:P115_DATA2 is null OR :P115_DATA1 is null)
group by
       eb.ID,
       eb.NAME,
       eb.TEMP,
       eb.ID_TRANS,
       eb.CR_DATE,
       eb.DATE_TMRT,
       we.name,
       ah.name,
       ad.name  

लेकिन फ़िल्टर की गई तिथियां निर्दिष्ट नहीं हो सकती हैं, और मुझे उपलब्ध होने के लिए सभी रिकॉर्ड चाहिए, और इसलिए "ओपी" होना चाहिए। यदि आप त्रुटि खोजने में मेरी सहायता कर सकते हैं तो मैं आभारी रहूंगा!

1
Apex_MAN 6 मार्च 2020, 10:39
एपेक्स_मैन, क्या यह अभी भी एक मुद्दा है? क्या आपने नीचे दिए गए उत्तरों की समीक्षा की है?
 – 
Dan McGhan
10 मार्च 2020, 01:24
हाँ, यह एक समस्या है, नीचे दिए गए उत्तरों में यह केवल देने के लिए कोला छुपाता है खाली नहीं।खाली तो एक गलती! , लेकिन एमपीएन के साथ एक और समस्या भी है। मैंने इसे इस तरह से किया है कि जब मैं कम से कम एक ITEM को बदलता हूं, तो मेरे पास एक गतिशील क्रिया होती है (नए ITEM मापदंडों के साथ पृष्ठ को अपडेट करना), लेकिन मैं सभी फिल्टर को साफ करने के लिए उनके नीचे एक बटन बनाना चाहता हूं। जहां मैं एक गतिशील क्रिया का भी उपयोग करता हूं जिसमें मैं सभी ITEM को शून्य पर असाइन करता हूं। लेकिन फिर पृष्ठ का निरंतर पुनः लोड होता है। और मैं इस समस्या का समाधान नहीं कर सकता (
 – 
Apex_MAN
10 मार्च 2020, 12:04
यह पता चला है कि मेरे पास 3 फ़िल्टर हैं (: P115_SILO_NAME,: P115_ORG, और: P115_DATA1,: P115_DATA2), लेकिन तारीखों को छोड़कर सब कुछ सही है (
 – 
Apex_MAN
10 मार्च 2020, 12:05
मुझे आपको समझने में कठिनाई हो रही है, लेकिन आइए इस तथ्य पर ध्यान केंद्रित करने का प्रयास करें कि आपको दिनांक फ़िल्टर में कठिनाई हो रही है। आपका क्या मतलब है कि वे सही ढंग से काम नहीं करते हैं? क्या आपको कोई त्रुटि मिलती है, क्या कोई पंक्तियाँ वापस नहीं आती हैं, या कुछ और? eb.DATE_TMRT का डेटाटाइप क्या है? मुझे उस मान का उदाहरण दें जिसका आपने P115_DATA1 और P115_DATA2 में परीक्षण किया था।
 – 
Dan McGhan
11 मार्च 2020, 00:00
(:P115_ORG शून्य है या we.name =:P115_ORG) और (:P115_SILO_NAME शून्य है या ah.name =:P115_SILO_NAME) और (to_timestamp(eb.DATE_TMRT,'dd.mm.yyyy hh24:mi:ss') to_timestamp के बीच (:BV1,'dd.mm.yyyy hh24:mi:ss') और to_timestamp(:BV2,'dd.mm.yyyy hh24:mi:ss') या (:BV2 is null OR :BV1 is null))
 – 
Apex_MAN
11 मार्च 2020, 11:25

2 जवाब

यह मानते हुए कि एक शर्त(BETWEEN/NULL) सही होनी चाहिए।
निम्नलिखित बदलें

and  to_timestamp(eb.DATE_TMRT)  between to_timestamp(:P115_DATA1,'dd.mm.yyyy') and to_timestamp(:P115_DATA2,'dd.mm.yyyy') 
------ when "OR" is missing then everything works ---
or   (:P115_DATA2 is null OR :P115_DATA1 is null)

प्रति

and  (to_timestamp(eb.DATE_TMRT)  between to_timestamp(:P115_DATA1,'dd.mm.yyyy') and to_timestamp(:P115_DATA2,'dd.mm.yyyy') 
------ when "OR" is missing then everything works ---
or   (:P115_DATA2 is null OR :P115_DATA1 is null))

मुझे लगता है कि यह काम करना चाहिए।

दूसरा परिदृश्य: जब सभी शर्तें या Null शर्त सही होनी चाहिए:

(
(:P115_ORG is null or we.name = :P115_ORG) 
and (:P115_SILO_NAME is null or  ah.name = :P115_SILO_NAME) 
and  to_timestamp(eb.DATE_TMRT)  between to_timestamp(:P115_DATA1,'dd.mm.yyyy') and to_timestamp(:P115_DATA2,'dd.mm.yyyy')
) 
or   (:P115_DATA2 is null OR :P115_DATA1 is null)
0
Naveen Kumar 6 मार्च 2020, 11:13

मुझे लगता है कि यह होना चाहिए था

where
  (                                                              --> this 
       (:P115_ORG is null or we.name = :P115_ORG) 
   and (:P115_SILO_NAME is null or  ah.name = :P115_SILO_NAME) 
   and  to_timestamp(eb.DATE_TMRT)  between to_timestamp(:P115_DATA1,'dd.mm.yyyy') 
                                        and to_timestamp(:P115_DATA2,'dd.mm.yyyy') 
  )                                                              --> this
  --
  or   (:P115_DATA2 is null OR :P115_DATA1 is null)

यानी सभी AND शर्तों को उनके अपने कोष्ठक में संलग्न करें, और OR शर्त को उसमें से छोड़ दें।

0
Littlefoot 6 मार्च 2020, 11:13
मदद के लिए धन्यवाद, क्या आप अब भी मेरे एक प्रश्न को देख सकते हैं? stackoverflow.com/questions/605033335/…
 – 
Apex_MAN
6 मार्च 2020, 16:22