Pokud vím, nemůžete dynamicky přidávat sloupce do příkazu SELECT. To, co požadujete, je způsob prezentace dat a o to MySQL nestojí. Měli byste to řešit na frontendu.
Můžete však podvádět vytvářením dotazů v modelu a dynamickým přidáváním těchto nových sloupců dynamickým vkládáním dalších MAX(case...
na řetězec dotazu. To však není hezké řešení.
Upravit:
Takže předpokládám, že mluvíte o ošklivém řešení. V zásadě byste měli dynamicky vytvořit řetězec dotazu (pseudokód):
$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...';
Pak by váš dotaz pro data od 18. 2. 2012 do 18. 3. 2012 měl vypadat takto:
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
Všimněte si, že jsem přidal dny místo týdnů, protože váš příklad ukázal rostoucí dny, ačkoli název sloupce byl týdny