【发布时间】:2014-07-04 21:53:30
【问题描述】:
我有一个有趣的错误并有兴趣查看可能的解决方案。情况如下: 我有一个用户表(user_id、first_name、last_name)。 我有一个地址表(user_id,地址)。 1 个用户可以有多个地址。
我想要一组结果,例如: {'user':user_id, 'address':address_array} // 如果一个用户的地址超过 1 个,则将其分组。
我通过获取按 user_id 排序的所有内容,然后遍历结果来做到这一点。
for (every item in results)
{
if (current result.user_id equal to previous one)
{
append the address to previous user
}
else
{
add the new one to my return array
}
}
这似乎工作正常,除了现在我想介绍 LIMIT。例如,我只想要前 20 个用户。当客户端按下 NEXT 时,它会跳过前 20 条并抓取接下来的 20 条记录。
问题是:
记录 19:用户 19 的地址为 1
记录 20:用户 19 的地址为 2
记录 21:用户 19 的地址为 3
记录 22:用户 19 的地址为 4
按照我现在做的方式,第一批20个只会显示用户19只有2个地址。然后,当客户端询问接下来的 20 个结果时,用户 19 将再次出现,并带有另外 2 个地址。
另外,我不能用 array.length 告诉数据库要跳过多少条记录。我需要计算现在有很多地址。这似乎不是一种优雅的方式,因为代码需要了解数据库的布局方式。
有什么想法吗?
【问题讨论】:
-
信息不足。例如,您使用的是什么数据库?
-
对不起,我用的是 MySQL
标签: javascript mysql sql