【发布时间】:2011-09-05 00:07:05
【问题描述】:
我的问题是我需要对这个查询中的数据进行分页:
function search($search_term, $limit, $offset)
{
$id = $this->auth->get_user_id();
$query = $this->db->query("
SELECT user_id,
first_name,
cars_name,
cars_id
FROM user_profiles
LEFT JOIN cars
ON cars.id_fk = user_id
WHERE user_id NOT LIKE '$id'
AND activated = 1
AND banned = 0
AND first_name LIKE '%$search_term%'
ORDER BY first_name ASC
");
$search_data = array();
foreach ($query->result() as $row) {
$search_data[$row->user_id]['name'] = $row->first_name;
$search_data[$row->user_id]['cars'][$row->cars_id] = array(
'cars_name' => $row->cars_name);
}
return $search_data;
}
示例数据表/查询响应将是:
1 JOE HONDA 123
1 JOE TOYOTA 124
2 MAC VW 125
2 MAC HONDA 126
2 MAC TESLA 127
3 STU SUBARU 128
3 STU KIA 129
-----------
Page 1
-----------
1 JOE HONDA 123
TOYOTA 124
2 MAC VW 125
HONDA 126
------------
Page 2
------------
3 STU SUBARU 128
KIA 129
如果我在 MySQL 查询结束时输入限制和偏移量
...
LIMIT $limit
OFFSET $offset;
");
限制和偏移量应用于总行数,而不是按用户分组的行数。
我尝试使用GROUP BY,但无法使用。
我的目标是按上述方式进行查询,但通过计算用户数的行数限制和偏移查询,而不是所有行。
有什么想法吗?
【问题讨论】:
标签: php mysql pagination group-by limit