2013-12-09 3 views
0

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

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

Это запрос, я использую:

public function sortByDate($order, $year) 
    { 
     $this->db->select('groups.*, general_info.proposed_date_of_arrival'); 
     $this->db->from('groups'); 
     $this->db->join('general_info', 'general_info.group_id = groups.group_id'); 
     $this->db->where('YEAR(groups.group_year)', $year); 
     $this->db->group_by('groups.group_id'); 
     $this->db->order_by("general_info.proposed_date_of_arrival", $order); 
     $val = $this->db->get(); 
    } 

Но выше только возвращается и сравнивает последние/самые последние записи в каждой группе, которая не является типом запроса, который должен быть сформирован.

Выход результатов:

array (size=2) 
     0 => 
     array (size=5) 
      'group_id' => string '2' (length=1) 
      'group_leader_name' => string 'Bob' (length=7) 
      'group_year' => string '2013-11-01' (length=10) 
      'year' => string '2013' (length=4) 
      'proposed_date_of_arrival' => string '2014-02-22' (length=10) 
     1 => 
     array (size=5) 
      'group_id' => string '1' (length=1) 
      'group_leader_name' => string 'John' (length=7) 
      'group_year' => string '2013-11-12' (length=10) 
      'year' => string '2013' (length=4) 
      'proposed_date_of_arrival' => string '2014-12-15' (length=10) 

Есть на самом деле два члена в каждом из этих двух групп испытуемых, самое раннее, в 1-й группе, имеющей предполагаемую дату прибытия 2013-12-31 и самый ранний в группа 2 - 2014-01-19.

Фактический результат заказа в порядке возрастания должен быть группой с датой 2013-12-31, являющейся первой, и следующей группой с датой 2014-01-199. Однако вместо этого получается результат выше массива, который сравнивает двух последних членов, вместо того, чтобы учитывать все предложенные членами члены. Как я могу сравнить все даты участников?

+0

@smcjones Почему вы удалите свой пост? Я опробовал запрос с ограничением, но он возвращает только первую строку, т. Е. Никакие другие группы не возвращаются, кроме первого. Может быть, я немного толстый. Возможно, я попытаюсь запросить количество групп и передать это как переменную в параметр предела? – a7omiton

+0

@smcjones c'mon dude, iso мнения :) – a7omiton

+0

Мне не удалось понять, что вы искали. Это было совершенно не по теме. Не хотел тратить ваше время дальше. Больше устал, чем понял! – smcjones

ответ

0

Я думаю это решение

public function sortByArrivalDateASC($year) 
    { 
     $this->db->select('groups.*, MIN(date(general_info.proposed_date_of_arrival)) as proposed_date_of_arrival'); 
     $this->db->from('groups'); 
     $this->db->join('general_info', 'general_info.group_id = groups.group_id'); 
     //$this->db->where('YEAR(groups.group_year)', $year); 
     $this->db->group_by('group_id'); 
     $val = $this->db->get(); 
    } 

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

Thanks to GROUP_BY MySQL reference и this w3schools explanation

+0

Просто, если кто-то может подтвердить, MIN() совпадает с order_by 'ASC'? Я получаю тот же результат, если я добавлю предложение order_by, но просто хочу подтвердить, если есть небольшие отличия. – a7omiton

+0

Не думайте, что получите нужный результат. Проверь это. Не знаю, как его преобразовать, но, похоже, это ответ. http://www.cafewebmaster.com/mysql-order-sort-group – smcjones

+0

Спасибо, я посмотрю, что я также наткнулся на некоторые результаты, которые показали «вложенные» запросы, но я также пытаюсь понять, как реализовать это в активной записи формы (возможно, отдельные запросы каким-то образом отделяются, idk). Благодарим вас за возвращение и публикацию этого блога, рассмотрим его дальше. – a7omiton

Смежные вопросы