Сортировка результатов таблицы по результатам последнего использования в другой таблице - PullRequest
0 голосов
/ 04 декабря 2018

У меня есть страница на моем сайте, которая распечатывает все имена и идентификаторы клиентов в базе данных для использования в отчете другой базе данных о проделанной работе.

Я хотел бы сделать для этой функциисортировать клиентов так, чтобы я отсортировал этот список в порядке, когда последний раз клиент использовался в отчете.Если в последнем отчете будет указано, что клиент попадает на первое место в моем клиенте.

Я использую Codeigniter, и у моего контроллера есть этот код:

$data['reports'] = $this->db->get('reports');

$data['customers'] = $this->db->get('customers');

$this->load->view('list', $data);

Это добавляется на мой взгляд:

foreach($customers->result() as $customer){ 
   echo "<option value='".$customer->id."'>".$customer->name."</option>";
}

Я добавил картинку, которая, надеюсь, облегчает понимание.

enter image description here

ОБНОВЛЕНИЕ № 1:

Итак, я с помощью приведенных ниже комментариев сработал так:

Контроллер:

$this->db->group_by('customer');
$this->db->order_by('date', DESC);
$data['reports'] = $this->db->get('reports');

$data['customers'] = $this->db->get('customers');

$this->load->view('list', $data);

Просмотр:

foreach($reports->result() as $rep){ 
    foreach($customers->result() as $customer){
        if($rep->customer == $customer->id){
            echo "<option value='".$customer->id."'>".$customer->name."</option>";
        }
    }
}

Это дает мне ответ клиентаодин раз в порядке даты отчета.

enter image description here

ОДНАКО!Это не работает, как я намеревался.Потому что, да, он сортирует по порядку даты, но сначала группирует отчеты, поэтому он берет дату, которая наступает последней и присутствует в эхо.Это будет первая дата, когда-либо записанная для этого клиента.Противоположность того, что я хотел.

Я не нашел способа изменить порядок обработки, сгруппированный по.Если это даже возможно ..

Также он не принимает ни одного клиента, у которого нет отчета.

1 Ответ

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

Это может быть не ответ на вопрос, но это заставило мой проект работать по крайней мере.Вместо того, чтобы использовать команду SQL, чтобы выбрать последнюю дату из отчетов и объединить ее со списком клиентов, я начал на другом конце с новым подходом.

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

Я использовал вариант этого и вставил его в этот выпуск.Поэтому теперь, когда я делаю отчет, я также вставляю текущую метку времени в «last_report» на клиенте, поэтому теперь, когда я проверяю список клиентов, мне даже не нужно вызывать отчеты, а только сортировать по последнему_отчету, который может бытьзаказывается с ASC и DESC.

Это может быть неправильное использование базы данных, но это работает, и общее количество вопросов о базе данных за полный цикл остается прежним.

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