किसी विशेष कॉलम में अज्ञात संख्या में मानों वाली तालिका के साथ काम करते समय (जैसे दिए गए उदाहरण में "तरीका"), बनाना MySQL में क्रॉस सारणीकरण एक चुनौती की तरह लग सकता है। पारंपरिक दृष्टिकोण के लिए आपको पूछताछ के समय कॉलम नाम निर्दिष्ट करने की आवश्यकता होती है, जो गतिशील स्थितियों में संभव नहीं हो सकता है।
इस चुनौती से निपटने के लिए, दो प्रोग्रामेटिक समाधान नियोजित किए जा सकते हैं :
इस दृष्टिकोण में अनिश्चित गणनाओं के साथ कॉलम के विशिष्ट मान प्राप्त करना शामिल है। मानों की इस सूची का उपयोग करके, आप एक गतिशील पिवट क्वेरी बना सकते हैं और अपने SELECT स्टेटमेंट में आवश्यक कॉलम जोड़ सकते हैं।
foreach ($pdo->query("SELECT DISTINCT `way` FROM `MyTable`") as $row) {
$way = (int) $row["way"];
$way_array[] = "MAX(IF(`way`=$way, `time`)) AS way_$way";
}
$pivotsql = "SELECT stop, " . join(", ", $way_array) . "FROM `MyTable` GROUP BY `stop`";
इस वैकल्पिक विधि में पंक्ति दर पंक्ति डेटा को क्वेरी करना शामिल है क्योंकि यह आपके डेटाबेस में संरचित है। आप डेटा को एक सरणी में एकत्र करेंगे और फिर उसे प्रदर्शित करने से पहले कॉलम में पिवट करेंगे।
$stoparray = array();
foreach ($pdo->query("SELECT * FROM `MyTable`") as $row) {
$stopkey = $row["stop"];
if (!array_key_exists($stopkey, $stoparray)) {
$stoparray[$stopkey] = array("stop"=>$stopkey);
}
$waykey = "way_" . $row["way"];
$stoparray[$stopkey][$waykey] = $row["time"];
}
दोनों दृष्टिकोणों को गतिशील स्थितियों के अनुकूल होने के लिए कोडिंग की आवश्यकता होती है जहां स्तंभों की संख्या अज्ञात है। दृष्टिकोण का चुनाव विशिष्ट डेटा हेरफेर आवश्यकताओं और दक्षता संबंधी विचारों पर निर्भर करेगा।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3