Привет sql-гуру
сломал уже мозг и пальцы об клавиатуру, но не могу получить последнюю запись из массива
есть такая вот фунька:
function get_all_threads_list($user_id, $order_by = 'DESC')
{
$sql = 'SELECT m.*, s.status, t.subject, ' . USER_TABLE_USERNAME .
' FROM ' . $this->db->dbprefix . 'msg_participants p ' .
' JOIN ' . $this->db->dbprefix . 'msg_threads t ON (t.id = p.thread_id) ' .
' JOIN ' . $this->db->dbprefix . 'msg_messages m ON (m.thread_id = t.id) ' .
' JOIN ' . $this->db->dbprefix . USER_TABLE_TABLENAME . ' ON (' . USER_TABLE_ID . ' = m.sender_id) '.
' JOIN ' . $this->db->dbprefix . 'msg_status s ON (s.message_id = m.id AND s.user_id = ? ) ' .
' WHERE p.user_id = ? group by m.thread_id ORDER BY t.id ' . $order_by. ', m.cdate '. $order_by;
$query = $this->db->query($sql, array($user_id, $user_id));
return $query->result_array();
}
в двух словах - она формирует массив из сообщений в связке с таблицей получателей, естественно из-за group by выводит только первое значение, если group by убрать, то выводится просто весь список сообщений. Решение где-то на поверхности, но не могу допетрить. Подсобите пожалста?
----------
UPD:
sqlfiddle.com/#!2/b1dab2/1
сейчас выводится id 2 и 1
если убрать GROUP BY m.thread_id то будет выводиться id 4, 2, 1
а нужно чтобы выводился id 4 и 1
т.е. по сути в group_by должно выбираться последнее значение, сейчас же выбирается первое