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

पिवट टेबल क्वेरी का उपयोग कर गतिशील कॉलम

जहाँ तक मुझे पता है, आप गतिशील रूप से SELECT स्टेटमेंट में कॉलम नहीं जोड़ सकते। आप जो मांग रहे हैं वह डेटा प्रस्तुत करने का एक तरीका है और यह ऐसा कुछ नहीं है जिसकी MySQL परवाह करता है। आपको इसे सामने के छोर पर संभालना चाहिए।

हालांकि, आप अपने मॉडल में अपने प्रश्न बनाकर और गतिशील रूप से उन नए कॉलम जोड़कर धोखा दे सकते हैं, गतिशील रूप से अधिक MAX(case... सम्मिलित करके। क्वेरी स्ट्रिंग के लिए। हालांकि, यह एक अच्छा समाधान नहीं है।

संपादित करें:

तो, मुझे लगता है कि आप बदसूरत समाधान के बारे में बात कर रहे हैं। ठीक है, मूल रूप से आपको गतिशील रूप से अपनी क्वेरी स्ट्रिंग (स्यूडोकोड) बनानी चाहिए:

$initialDay = 02/28/2012;
$lastDay = 03/28/2012;
$dayNumber = 1;
$sql = 'Select cadet_record.fname,cadet_record.lname,cadet_record.mname, student_id';
while ($initialDay <= $lastDay) {
    $sql .= ', MAX(case WHEN week = $initialDay then present end) as day' . $dayNumber;
    $initialDay = $initialDay + 1 day;
    $dayNumber++;
}
$sql .= ' From attendance blah blah...';

फिर 02/18/2012 से 03/18/2012 तक की तारीखों के लिए आपकी क्वेरी इस तरह दिखनी चाहिए:

Select cadet_record.fname,cadet_record.lname,cadet_record.mname, student_id,
,MAX(case WHEN week = '02/18/2012' then present end) as day1
,MAX(case WHEN week = '02/19/2012' then present end) as day2
From attendance
LEFT JOIN cadet_record ON cadet_record.stud_no = attendance.student_id WHERE section = '$section' AND schoolyear = '$year' AND component = '$component' AND semester = '$semester'

छात्र_आईडी द्वारा ग्रुप करें

ध्यान दें कि मैंने हफ्तों के बजाय दिनों को जोड़ा क्योंकि आपके उदाहरण ने बढ़ते दिनों को दिखाया, हालांकि कॉलम का नाम सप्ताह था



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql बल्क इंसर्ट

  2. एक-से-अनेक SQL एकल पंक्ति में चयन करें

  3. json_encode अगली पंक्तियों के मान लौटाता है - PHP PDO SQL HighCharts

  4. सभी डेटा का चयन करें एक और तालिका शामिल करें भले ही अशक्त हो

  5. 2006 त्रुटि:MySQL सर्वर पायथन, बॉटल माइक्रोफ्रेमवर्क और अपाचे का उपयोग करके चला गया है