Группировка по и отображение записей под датой - PullRequest
1 голос
/ 08 марта 2009

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

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  

Ответы [ 2 ]

3 голосов
/ 09 марта 2009
$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.

2 голосов
/ 08 марта 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...