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

Тогава вашата заявка трябва да изглежда така за дати от 18.02.2012 г. до 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'

ГРУПИРАНЕ ПО student_id

Забележете, че добавих дни вместо седмици, защото вашият пример показа нарастващи дни, въпреки че името на колоната беше седмици



  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 код за INET6_ATON

  2. Php/MySql намира/заменя utf-8 низ в json

  3. Команда за вмъкване на VB.NET mySQL

  4. Как да получите измерението на декларирана променлива в SP?

  5. MySQL база данни с уникални полета игнорирани крайни интервали