以下のクエリを試して、PHPループを使用して目的の結果を取得してください。表示用にデータをフォーマットするには、PHPループ内でid、time、titleの値を分割する必要があります。
SELECT
GROUP_CONCAT(id) AS id,
DATE_FORMAT(date,'%M %e') AS Date,
GROUP_CONCAT(DATE_FORMAT(date,'%H:%i:%s')) AS TimeValue,
GROUP_CONCAT(title) AS Title
FROM abc
GROUP BY DATE(date)
ORDER BY MONTH(date) DESC
OUTOUT
ID DATE TIMEVALUE TITLE
1 December 19 11:00:00 Value 10
2,3,4 January 4 09:00:00,20:00:00,21:00:00 Value 15,Value 18,Value 5
5,6,7 January 7 09:00:00,09:40:00,11:00:00 Value 8,Value 11,Value 12
SQLフィドル:http ://sqlfiddle.com/#!2 / ec3a8 / 6
アップデート:
出力
ID DATE TIMEVALUE
1 December 19 11:00:00___Value 10
2,3,4 January 4 09:00:00___Value 15,20:00:00___Value 18,21:00:00___Value 5
5,6,7 January 7 09:00:00___Value 8,09:40:00___Value 11,11:00:00___Value 12
PHPコード:上記のクエリ出力に基づいて、以下のような配列があると想定しています。
<?php
$data = array(
0=>array(
'id'=>1,
'date'=>'December 19',
'time_value'=>'11:00:00___Value 10',
),
1=>array(
'id'=>2,3,4,
'date'=>'January 4',
'time_value'=>'09:00:00___Value 15,20:00:00___Value 18,21:00:00___Value 5',
),
2=>array(
'id'=>5,6,7,
'date'=>'January 7',
'time_value'=>'09:00:00___Value 8,09:40:00___Value 11,11:00:00___Value 12',
)
);
if(is_array($data))
{
foreach($data as $value)
{
if(is_array($value))
{
echo '<br />'.$value['date'].'<br />';
$arrTime = explode(',', $value['time_title']);
if($arrTime)
{
foreach($arrTime as $time)
{
$arrTimeTitle = explode('_', $time);
echo $arrTimeTitle[0]." ".$arrTimeTitle[1]."<br />";
}
}
}
}
}
?>
最終的なPHP出力:
December 19
11:00:00 Value 10
January 4
09:00:00 Value 15
20:00:00 Value 18
21:00:00 Value 5
January 7
09:00:00 Value 8
09:40:00 Value 11
11:00:00 Value 12