mysql - SQL join to get records that do not fall between two dates -
मेरे पास निम्न तालियां हैं:
डिस्काउंट तालिका: आईडी नाम विवरण राशि डिस्काउंट _ एक्सक्साशन आईडी from_date डिस्काउंट_आईडी (डिस्काउंट टेबल के लिए विदेशी कुंजी) छूट अपवाद तालिका का उपयोग उस तिथि सीमा को स्टोर करने के लिए किया जाता है जहां डिस्काउंट को उपयोगकर्ता के लिए उपलब्ध नहीं होना चाहिए और इसलिए उसे प्रदर्शित नहीं किया जाना चाहिए। नोट करें कि डिस्काउंट और डिस्काउंट / अपवाद के बीच 1: M रिश्ते हैं दूसरे शब्दों में, एक डिस्काउंट में कई अपवाद हो सकते हैं।
अभी, जिस तरह मैंने एसक्यूएल लिखा है, वह सभी डिस्काउंट ले लीजिए, फिर उनके माध्यम से एक सरणी में लूप करें, और डिस्काउंट_ एक्सप्शन तालिका का पता लगाएं अगर प्रत्येक डिस्काउंट एक विशेष तिथि सीमा के भीतर आता है मैं एसक्यूएल को संशोधित करना पसंद करता हूं ताकि एक डाटाबेस कॉल सभी डिस्काउंट को हड़प कर सके जो अपवाद दिनांक नहीं है जो एक निर्दिष्ट दिनांक सीमा के भीतर आते हैं। उदाहरण के लिए, अगर कोई उपयोगकर्ता 5 दिन की सेवा खरीद रहा है जो 2013-5-1 और 2013-5-5 के बीच चलता है, मैं यह पता लगाने के लिए कि डिस्काउंट के अपवाद जो 2013-5-1 और 2013-5-5 के भीतर आते हैं, और फिर केवल छूट और डिस्काउंट / एक्सपैशन तालिका की जांच करना चाहते हैं उन डिस्काउंटों को प्रदर्शित करें जिनको निर्दिष्ट तिथि सीमा के भीतर अपवाद नहीं है। क्या प्रत्येक डिस्काउंट के लिए डेटाबेस को एक अलग कॉल बनाने के लिए एसक्यूएल को तोड़ने के बजाए ऐसा करने का एक तरीका है? मुझे एसक्यूएल के आसपास मेरे सिर का सामना करना मुश्किल हो रहा है, खासकर जब डिस्काउंट टेबल और डिस्काउंट_ एक्सपेस्टमेंट टेबल के बीच एक 1: एम रिश्ते है।
मैं इस की तर्ज पर कुछ कोशिश कर रहा था: <पूर्व> छूट से छूट * IN.IN पर छूट 'छूट _ एक्सपेसशंस' पर छूट दें। डिस्काउंट_ एक्सप्शन। डिस्कस_आईडी और ('डिस्काउंट_ एक्सपेसेशन.डेट' से '2013-5-1' और '2013-5-5' या डिस्काउंट_ एक्सप्शन पर नहीं। '2013-5-1' और '2013-5-5' के बीच की तारीख नहीं); लेकिन यह और इसके अन्य विविधताएं काम नहीं करतीं हैं। कोई भी विचार जो मैं गलत कर रहा हूं?
धन्यवाद!
यह कैसे देना है एक कोशिश:
छूट से * चुनें जहां आईडी नहीं है (छूट से छूट का चयन करें।) छूट दें छूट छूट पर छूट .id = discount_exception.discount_id WHERE ('2013-5-1 'Discount_exception.from_date और discount_exception.to_date के बीच) या (' 2013-5-5 'के बीच discount_exception.from_date और discount_exception.to_date) या (' 2013-5-1 'और' 2013-5-5 'के बीच discount_exception.from_date) अलग ID को प्राप्त करने के लिए अलग-अलग जोड़ने के लिए बेहतर है (या '2013-5-1' और '2013-5-5'
Comments
Post a Comment