Как сгруппировать строки с одинаковым значением из MySQL в PHP? - PullRequest
0 голосов
/ 17 февраля 2019

Так что я пытаюсь сортировать разные строки в день и просто выводить некоторую информацию «testdate» о различных уникальных строках, но у меня проблема в том, что только первый идентификатор получает правильную выведенную «testdate», а не все остальные.Пожалуйста, посмотрите на мой пример того, что у меня есть сейчас и что я ищу.

Это моя таблица с именем "1702":

╔════╦══════════╦═════════════════════╗
║ id ║ testdate ║     datecreated     ║
╠════╬══════════╬═════════════════════╣
║ 1  ║   1702   ║ 2019-02-16 14:48:28 ║
║ 2  ║   1702   ║ 2019-02-17 14:48:58 ║
║ 8  ║   1802   ║ 2019-02-16 14:50:07 ║
║ 4  ║   1702   ║ 2019-02-17 14:48:51 ║
║ 7  ║   1802   ║ 2019-02-17 14:50:34 ║
║ 6  ║   1702   ║ 2019-02-17 14:48:54 ║
║ 9  ║   1802   ║ 2019-02-16 14:50:09 ║
║ 10 ║   1802   ║ 2019-02-17 14:50:12 ║
║ 11 ║   1602   ║ 2019-02-14 14:50:55 ║
║ 12 ║   1602   ║ 2019-02-14 14:51:11 ║
╚════╩══════════╩═════════════════════╝

Мой текущий результат таков:

2019-02-17
2,4,7,6,10 1702

2019-02-16
1,8,9 1702

2019-02-14
11,12 1602

Но я хочу, чтобы это было так:

2019-02-17
2 1702
4 1702
7 1802
6 1702
10 1802

2019-02-16
1 1702
8 1802
9 1802

2019-02-14
11 1602
12 1602

У меня есть такой код:

$sql = 'SELECT  DATE(datecreated), GROUP_CONCAT(id) as grouped_name, testdate FROM `1702` GROUP BY DATE(datecreated) DESC';
$result = mysqli_query($conn,$sql);
while ($row = mysqli_fetch_assoc($result)) {
    echo $row['DATE(datecreated)'].'<br>';
    echo '
        <div class="box-bettype">
            <p class="box-bettype-text">'. $row['grouped_name']. ' ' . $row ['testdate'] . '</p>
        </div>
        ';
}

1 Ответ

0 голосов
/ 17 февраля 2019

Попробуйте это:

$sql = 'SELECT DATE(datecreated) as datecreated, id as grouped_name, testdate FROM `1702` ORDER BY DATE(datecreated) DESC';
$result = mysqli_query($conn,$sql);
$prevDate = null;
while ($row = mysqli_fetch_assoc($result)) {
    echo $row['datecreated'] !== $prevDate ? $row['datecreated'].'<br>' : '';
    $prevDate = $row['datecreated'];
    echo '
        <div class="box-bettype">
            <p class="box-bettype-text">'. $row['grouped_name']. ' ' . $row ['testdate'] . '</p>
        </div>
        ';
}

Я удалил GROUP_CONCAT и просто сравнил текущую дату с предыдущей датой.

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