Как составить список записей по дате? - PullRequest
0 голосов
/ 01 июня 2018

вы видите, я пытаюсь перечислить записи таблицы в моей базе данных, но я хочу сделать это следующим образом:

  1. Сначала необходимо отобразить дату
  2. и тогда все записи на эту дату должны появиться

В моей таблице базы данных у меня есть 4 поля:

id, task, date, time

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

Что-то в этом роде

Это мой php-код

$obj = new Task();
$consult = $obj->Lists();

date_default_timezone_set("America/Mexico_City");
$dateActual = date("Y-m-d");

while ($result = $consult->fetch_object()) {

    echo "<button class='btn btn-default'>date = " . $result->date . "</button><br>";

    $consult2 = $obj->Lists2($dateActual);
    while($result2 = $consult2->fetch_object()) {
          echo "<span>". $result2->time ."</span><br>";
    }
    $dateActual = $result->date;
}

Мой запрос к базе данных:

public function Lists2($date) 
{
    global $conexion;

    $sql = "SELECT ar.*, date_format(ar.date, '%d/%m/%Y') as date, 
                   date_format(ar.time, '%r') as time, 
                    u.user as User 
            FROM task_recents ar 
                INNER JOIN user u ON ar.iduser = u.iduser 
            WHERE date = '$date' 
            ORDER BY ar.time DESC";
    $query = $conexion->query($sql);
    return $query;
}

public function Lists() 
{
    global $conexion;

    $sql = "SELECT ar.*, date_format(ar.date, '%d/%m/%Y') as date, 
                    date_format(ar.time, '%r') as time, 
                    u.user as User 
            FROM task_recents ar 
                INNER JOIN user u ON ar.iduser = u.iduser 
            ORDER BY ar.time DESC";
    $query = $conexion->query($sql);
    return $query;
}

В результате он показывает мне повторную дату с соответствующими записями.

Что я пытаюсь достичь, это что-то вроде этого:

enter image description here

Как я могу это сделать?

PD: результат, который я получаю, таков:

enter image description here

enter image description here

enter image description here

enter image description here

Но мне это не нравится ...

1 Ответ

0 голосов
/ 02 июня 2018

Ключевое слово INNER JOIN выбирает все строки из обеих таблиц, если между столбцами есть совпадение.Если в таблице «Заказы» есть записи, у которых нет совпадений в «Заказчиках», эти заказы не будут отображаться!

Следующий запрос больше не должен генерировать повторяющиеся записи

SELECT 
    ar.id,
    ar.task,
    date_format(ar.date, '%d/%m/%Y') as formattedDate, 
    date_format(ar.time, '%r') as formattedTime, 
    u.user as User 
FROM 
    task_recents ar 
LEFT JOIN 
    user u 
ON 
    u.iduser = ar.iduser 
WHERE 
    date = '$date' 
ORDER BY 
    ar.time 
DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...