निम्नलिखित आपको जाना चाहिए। आप मेरे "Current_Date ()" फ़ंक्शन के नमूने को समायोजित करना चाह सकते हैं, जो भी आपकी आरक्षण की आरंभ तिथि और इतने दिनों तक बाहर जाने के लिए हो सकता है ....
यह क्वेरी में MySQL इनलाइन चर का उपयोग करता है। आंतरिक क्वेरी कुछ प्रारंभिक तिथि (current_date() ) के आधार पर आरक्षण (@r) चर की एक साधारण तैयारी है, और आइटम तालिका में शामिल हो जाती है। नो जॉइन क्लॉज करने से, यह अन्यथा प्रत्येक आइटम के लिए एक तारीख ले लेगा। मेरे परिदृश्य में, मैं केवल 30 दिनों के लिए बाहर जाने पर विचार कर रहा हूँ, इसलिए मैंने पहले 30 वस्तुओं की एक सीमा लागू की है। मुझे पर्याप्त रिकॉर्ड देने के अलावा कोई आधार नहीं है, इसलिए मुझे 30 रिकॉर्ड्स की एक अस्थायी तालिका बनाने की आवश्यकता नहीं है (या कितने दिन आप बाहर जाना चाहते हैं)। यह एक उपनामित क्वेरी "जस्टडेट्स" बनाता है और इसमें एक कॉलम "ओपनडेट" होता है। यह परीक्षण करने के लिए दिनांक सीमाओं का आधार है।
यह अब आइटम तालिका में शामिल हो गया है, लेकिन कोई भी शर्त प्रत्येक तिथि के लिए कार्टेशियन नहीं बनाती है, प्रत्येक आइटम के साथ तुलना करें ... WHERE क्लॉज के अनुसार, मैं केवल "एबीसी 123" मौसम के एसकेयू वाले आइटम्स से चिंतित हूं, उनके पास 10 सीरियल हैं #s या 100. यह अब मुझे 300 या 3000 (10 सीरियल आइटम @ 30 दिन, या 100 सीरियल आइटम @ 30 दिन।)
अब जब मेरे पास उपलब्धता की जांच करने के लिए सभी व्यक्तिगत सीरियल नंबरों और संभावित दिनों की "रेंज" है, तो मैं अब आरक्षण प्रणाली के खिलाफ पूछताछ कर सकता हूं। तो, एक उप-चयन के माध्यम से, और किसी दिए गए मिलान SKU, सीरियल #, और आरक्षण में संभावित तिथि के लिए नहीं, मैं केवल उन लोगों को रखना चाहता हूं जहां दिया गया ओपनडेट नहीं मिला है। मैंने आपकी टेबल संरचनाओं का अनुकरण किया है और कुछ आइटम, एकाधिक सीरियल नंबर और कंपित आरक्षण तिथि सीमाएं डाल दी हैं और यह बहुत अच्छा काम करता है...
जाहिर है, मैं प्रदर्शन के लिए स्कू/सीरियल पर इंडेक्स सुनिश्चित करूंगा। केवल एक अतिरिक्त परिवर्तन जो मैं कर सकता हूं वह यह है कि आरक्षण के खिलाफ पूछताछ करते समय, किसी भी आरक्षण को बाहर करने के लिए जहां समाप्ति तिथि आपकी क्वेरी के लिए प्रश्न में शुरू होने की तारीख से पहले है, और वैकल्पिक रूप से, कोई प्रारंभ तिथि नहीं> अंतिम तिथि जिस पर आप विचार कर रहे हैं। यदि आपके पास वर्षों से आरक्षण का एक टन है, जो किसी प्राचीन चीज की परवाह करता है, या भविष्य में किसी तरह की तारीख सीमा से संबंधित है।
select items.sku,
items.serial_number,
JustDates.OpenDate
from
( SELECT
@r:= date_add(@r, interval 1 day ) OpenDate
FROM
(select @r := current_date()) vars,
items limit 30 ) JustDates,
items
where
sku = "ABC123"
and sku not in ( select sku from Reservations
where items.sku = reservations.sku
and items.serial_number = reservations.serial_number
and justDates.OpenDate >= reservations.start_date
and justDates.OpenDate <= reservations.end_date )
order by
items.serial_number,
justDates.OpenDate