在mysql中选择相对结果集作为数组

时间:2014-01-18 10:20:50

标签: mysql sql

所以这是我的问题。我有3张桌子

enter image description here

case_assign.cfid => case_fields.cfid and case_assign.uid => users.uid

我试图编写的单个查询基本上取两个日期之间的所有情况,同时还通过case_assign表选择分配给案例的每个人,case_assign表也通过它和用户中的uid字段获取名称表

现在是挑战。由于可以将许多人分配给任何一个案例,因此从case_assign获取多行来获取从case_fields获取的单行,但查询不是基于case_assign的,其基于case_fields意味着我将收到类似“ mysql错误:返回太多字段“或类似的东西。

所以我在想,有没有办法可以将从case_assign表中获取的任何一个查询所选择的总行数返回到将发送到客户端的数组中然后我可以将json.parse()更改为在客户端。

由于

1 个答案:

答案 0 :(得分:1)

SELECT cf.cfid, GROUP_CONCAT(u.fname) assignees
FROM case_fields cf
LEFT JOIN case_assign ca ON cf.cfid = ca.cfid
LEFT JOIN users u ON ca.uid = u.uid
GROUP BY cf.cfid

这将在assignees中创建以逗号分隔的用户名列表。您可以将其拆分为客户端应用程序中的数组。

或者您可以使用此查询:

SELECT cf.cfid, u.fname
FROM case_fields cf
LEFT JOIN case_assign ca ON cf.cfid = ca.cfid
LEFT JOIN users u ON ca.uid = u.uid
ORDER BY cf.cfid

然后在循环搜索结果时,检查当前cfid是否与前一个相同;如果是,则将fname附加到受理人列表,否则在结果数组中开始一个新条目。

相关问题