Mysql
 sql >> Baza danych >  >> RDS >> Mysql

kolumny dynamiczne przy użyciu zapytania tabeli przestawnej

O ile wiem, nie można dynamicznie dodawać kolumn do instrukcji SELECT. To, o co prosisz, to sposób prezentacji danych, a to nie jest coś, o co MySQL się troszczy. Powinieneś sobie z tym poradzić z przodu.

Możesz jednak oszukiwać, tworząc zapytania w swoim modelu i dynamicznie dodając nowe kolumny, dynamicznie wstawiając więcej MAX(case... do ciągu zapytania. Nie jest to jednak miłe rozwiązanie.

Edytuj:

Więc myślę, że mówisz o brzydkim rozwiązaniu. Cóż, w zasadzie powinieneś dynamicznie tworzyć swój ciąg zapytania (pseudokod):

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

Twoje zapytanie powinno wyglądać tak dla dat od 18.02.2012 do 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'

GROUP BY student_id

Zauważ, że dodałem dni zamiast tygodni, ponieważ twój przykład pokazał rosnącą liczbę dni, chociaż nazwa kolumny to tygodnie



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapisywanie elementów do bazy danych MySQL w Scrapy

  2. Jak naprawić:Nie znaleziono odpowiedniego sterownika dla błędu jdbc:mysql://localhost/dbname podczas korzystania z pul?

  3. Wybierz wiele tabel, gdy jedna tabela jest pusta w MySQL

  4. Jak wyszukać wartość zakresu z bazy danych

  5. Zapytanie wymagające dopasowania kolumn w klauzuli „Order By” do kolumn w klauzuli „Group by”