Я пытаюсь понять это, но безуспешно. Я продолжаю получать странные результаты! Во-первых, у меня есть база данных MySQL с несколькими строками, структура выглядит так:
ID
MESSAGE_ID
СООБЩЕНИЕ
ВРЕМЯ
ДАТА
Теперь, message_id может быть одним и тем же несколько раз, и здесь начинается моя проблема. Я хочу выбрать последнюю строку сортировки дублированного message_ID по идентификатору.
Итак, допустим, у меня нормальный запрос get, и результат выглядит следующим образом,
Array
(
[0] => Array
(
[id] => 3
[message_id] => 1
[from_user_id] => 3
[to_user_id] => 1
[message] => last
[time_sent] => 1331874924
[date_sent] => 16/03/2012
[opened] => 0
[ip] => ::1
[deleted] => 0
[reported] => 0
)
[1] => Array
(
[id] => 2
[message_id] => 1
[from_user_id] => 3
[to_user_id] => 1
[message] => middle
[time_sent] => 1331874920
[date_sent] => 16/03/2012
[opened] => 0
[ip] => ::1
[deleted] => 0
[reported] => 0
)
[2] => Array
(
[id] => 1
[message_id] => 1
[from_user_id] => 3
[to_user_id] => 1
[message] => first
[time_sent] => 1331874916
[date_sent] => 16/03/2012
[opened] => 0
[ip] => ::1
[deleted] => 0
[reported] => 0
)
[3] => Array
(
[id] => 4
[message_id] => 2
[from_user_id] => 3
[to_user_id] => 1
[message] => test
[time_sent] => 1331874916
[date_sent] => 16/03/2012
[opened] => 0
[ip] => ::1
[deleted] => 0
[reported] => 0
)
)
Теперь я хочу удалить дубликаты message_id и получить только это (обратите внимание, как должно быть упорядочено по идентификатору)
Array
(
[0] => Array
(
[id] => 3
[message_id] => 1
[from_user_id] => 3
[to_user_id] => 1
[message] => last
[time_sent] => 1331874924
[date_sent] => 16/03/2012
[opened] => 0
[ip] => ::1
[deleted] => 0
[reported] => 0
)
[1] => Array
(
[id] => 4
[message_id] => 2
[from_user_id] => 3
[to_user_id] => 1
[message] => test
[time_sent] => 1331874916
[date_sent] => 16/03/2012
[opened] => 0
[ip] => ::1
[deleted] => 0
[reported] => 0
)
)
То, что я пытался сделать раньше, это
$this->db->order_by(‘id’, ‘DESC’);
$this->db->group_by(‘message_id’);
и
$this->db->group_by(‘message_id’);
$this->db->order_by(‘id’, ‘DESC’);
но я не получаю последние результаты из message_id, только первый (похоже, что он не сохраняется перед удалением или что-то в этом роде?)
Любая помощь будет отличной!