Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MySQL डायनेमिक क्रॉस टैब

जब आप क्वेरी तैयार करते हैं तो कॉलम की संख्या और नाम निश्चित होना चाहिए। ठीक इसी तरह SQL काम करता है।

तो आपके पास इसे हल करने के दो विकल्प हैं। दोनों विकल्पों में आवेदन कोड लिखना शामिल है:

(1) अलग-अलग मान पूछें way . का और फिर अलग-अलग मानों की संख्या के रूप में 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`";

अब आप नई क्वेरी चला सकते हैं, और इसमें उतने ही कॉलम हैं जितने अलग-अलग way मान।

$pivotstmt = $pdo->query($pivotsql);

(2) डेटा पंक्ति को पंक्ति के अनुसार क्वेरी करें जैसा कि यह आपके डेटाबेस में संरचित है, और फिर डेटा प्रदर्शित करने से पहले कॉलम में पिवट करने के लिए कोड लिखें।

$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"];
}

अब आपके पास सरणियों की एक सरणी है जो वैसी ही दिखती है जैसे कि आपने पिवट क्वेरी चलाई थी, लेकिन आपके द्वारा चलाई गई वास्तविक SQL बहुत सरल थी। आपने क्वेरी परिणाम को सरणियों के एक अलग सेट में पोस्ट-प्रोसेस किया है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. WooCommerce के कुछ टेम्प्लेट में श्रेणी वस्तु प्राप्त नहीं कर सकता

  2. एसक्यूएल में कैसे सॉर्ट करें, लेखों को अनदेखा करें ('द, ए', ए आदि)

  3. मैं mysqli_ फ़ंक्शंस का उपयोग करने के लिए mysql_ फ़ंक्शंस का उपयोग करके स्क्रिप्ट को कैसे परिवर्तित करूं?

  4. sql डेवलपर को XAMPP MYSQL सर्वर से कैसे कनेक्ट करें

  5. टेक्स्ट फ़ील्ड के शब्द गणना आँकड़े निर्धारित करने के लिए SQL का उपयोग करना