Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

kolom dinamis menggunakan kueri tabel pivot

Sejauh yang saya tahu, Anda tidak dapat menambahkan kolom secara dinamis ke pernyataan SELECT. Apa yang Anda minta adalah cara menyajikan data dan itu bukan sesuatu yang dipedulikan MySQL. Anda harus menanganinya di bagian depan.

Namun, Anda dapat menipu dengan membuat kueri dalam model Anda dan menambahkan kolom baru tersebut secara dinamis, dengan memasukkan lebih banyak MAX(case... secara dinamis) ke string kueri. Itu bukan solusi yang bagus.

Sunting:

Jadi, saya kira Anda sedang berbicara tentang solusi jelek. Nah, pada dasarnya Anda harus secara dinamis membuat string kueri (pseudocode):

$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...';

Maka kueri Anda akan terlihat seperti ini untuk tanggal dari 18/02/2012 hingga 18/03/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'

KELOMPOK MENURUT student_id

Perhatikan saya menambahkan hari, bukan minggu karena contoh Anda menunjukkan peningkatan hari, meskipun nama kolomnya adalah minggu



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memasukkan di mySQL nilai yang disandikan JSON dengan karakter khusus gagal

  2. Menggunakan Otomatisasi untuk Mempercepat Tes Rilis di Galera Cluster Dengan ClusterControl

  3. PHP strtotime mengembalikan nilai yang berbeda dari Mysql UNIX_TIMESTAMP

  4. Instal Web Server di Windows XP dengan Apache2, PHP5 dan MySQL4 – Bagian 1

  5. mencoba memecahkan kode data (mengekspor Abs ke MySQL)