Group By и отображение записей на дату

Вот мои данные:

id date 1 2009-01-01 10:15:23 2 2009-01-01 13:21:29 3 2009-01-02 01:03:13 4 2009-01-03 12:20:19 5 2009-01-03 13:01:06 

То, что я хотел бы сделать, это группировать по каждой дате, а затем перечислять номера идентификаторов ниже каждой даты. Должен ли я получать отдельные значения даты, а затем ездить по ним, чтобы получить записи, которые попадают на дату? это эффективно?

поэтому мой вывод будет выглядеть так:

 2009-01-01 1 2 2009-01-02 3 2009-01-03 4 5 

 $query = "SELECT DATE(date) as mydate, id FROM your_data_table ORDER BY mydate, id"; $result = $pdo->query($query); $oldDate = false; while ( list($date, $id) = $result->fetch(PDO::FETCH_NUM) ) { if ( $oldDate != $date ) { echo "$date\n$id\n"; $oldDate = $date; } else { echo "$id\n"; } } 

Вместо того, чтобы делать это в нескольких запросах, вы просто извлекаете сразу все данные. Если вам нужны только некоторые даты, вы просто кладете предложение WHERE перед ORDER BY .

У ваших сохраненных дат есть информация о времени (тип столбца DATETIME или TIMESTAMP), для того чтобы сделать группу, вам нужно извлечь только часть даты в ваш временной интервал, вы можете использовать функцию DATE () .