मेरे पास परियोजनाओं का डेटा सेट है। परियोजनाएं शुरुआत से अंत तक स्थिति बदलती हैं, और किसी तालिका में स्थिति परिवर्तन की तारीख लॉग होती है (तालिका का नाम "ईवेंट" होता है - मेरी पसंद नहीं)। (सरलीकृत) इस प्रकार दिखाई देगा:MySQL किसी दिए गए स्थिति के लिए दो तिथियों के बीच अनुपलब्ध तिथियों को भरें
Date Status
2015-06-01 Start
2015-06-03 Stage 2
2015-06-07 Stage 3
किसी विशेष दिनांक सीमा में (गतिशील निर्धारित किया जाना) मैं जो परियोजनाएं हैं जो स्थिति में हैं देखने के लिए सक्षम होना चाहता हूँ। हालांकि, डेटा के खिलाफ BETWEEN या अन्य क्वेरी का उपयोग केवल उन्हीं परियोजनाओं को खींच देगा जिनकी स्थिति उस अवधि के दौरान बदल दी गई है, जो अभी भी किसी दिए गए स्थिति पर नहीं हैं।
मैं वर्तमान में Excel में एक बहुत ही भद्दा समाधान बना लिया है जो स्थिति परिवर्तन तिथियों के बीच नई पंक्तियाँ, इसलिए की तरह में प्रतियां पंक्तियों:
Date Status
2015-06-01 Project start
2015-06-02 Project start (copied)
2015-06-03 Stage 2
2015-06-04 Stage 2 (copied)
2015-06-05 Stage 2 (copied)
2015-06-06 Stage 2 (copied)
2015-06-07 Stage 3
यह समाधान मुझ पर परियोजना के लिए स्थिति को क्वेरी करने की अनुमति देता है, कहते हैं कि , 2015-06-06 और देखें कि यह अभी भी चरण 2 पर है।
क्या कोई तरीका है कि मैं अपने डेटा को उसी डेटा को खींचने के लिए उपयोग कर सकता हूं, लेकिन एक क्वेरी के आउटपुट के रूप में? मैंने कैलेंडर तालिका का उपयोग करने के लिए कुछ सुझाव सुना है, लेकिन मुझे यकीन नहीं है कि यह कैसे काम करेगा। मैंने किसी को भी क्रॉस जॉइन की सलाह दी है, लेकिन फिर से, मैं विवरण से समझ नहीं पाया कि यह कैसे काम करेगा।
आपकी मदद के लिए अग्रिम धन्यवाद!
धन्यवाद, amdixon। जब मैं कार्यालय में वापस आऊंगा तो मैं उसे एक शॉट दूंगा। इस बीच, मैं यह समझने पर काम करूंगा कि इसका क्या अर्थ है :) मैंने कभी भी क्रॉस का उपयोग कभी नहीं किया है, और आश्चर्य किया कि उनका क्या उपयोग किया गया था। मुझे लगता है कि मैं पता लगाने जा रहा हूँ। –
क्रॉस जॉइन का मतलब बाएं और दाएं डेटासेट से रिकॉर्ड्स के सभी संयोजनों को लेना है। इसलिए यदि आप 5 रिकॉर्ड वाले डेटासेट के साथ 2 रिकॉर्ड वाले डेटासेट में शामिल हो जाते हैं, तो आप 10 रिकॉर्ड वाले डेटासेट के साथ समाप्त होते हैं। [क्रॉस जॉइन] देखें (http://www.w3resource.com/sql/joins/cross-join.php)। इस संदर्भ में यह एक संख्यात्मक अनुक्रम उत्पन्न करने का एक तरीका है – amdixon
@RyanVincent हां आप इसे कैलेंडर आबादी के लिए आसानी से उपलब्ध डेटास्रोत (अनुक्रम पीढ़ी के लिए) के रूप में उपयोग कर सकते हैं। दक्षता शायद चिंता का विषय नहीं है, क्योंकि कैलेंडर लोड केवल वर्ष में अधिकतम एक बार होगा। बस सुनिश्चित करें कि आईडी अनुक्रम में कोई अंतराल नहीं है .. – amdixon