![](/img/trans.png)
[英]MYSQL Single query to retrieve both single row from one table and many rows as a single field from another
[英]MySQL query - single row in one table with multiple rows in another table
我有以下数据模型
Table: User
USER ID
USER NAME
Table: Group
GROUP ID
GROUP NAME
Table: User Group
GROUP ID
USER ID
我正在尝试显示包含所有组名和关联用户的屏幕-前端是PHP
我有如下查询-
`SELECT a.group_id,
a.group_name,
GROUP_CONCAT(g.user_id) AS user_ids,
GROUP_CONCAT(u.user_fname) AS user_names
FROM group a, user_group g, user u
WHERE a.group_id = g.group_id
AND g.user_id = u.user_id
GROUP BY a.group_id`
我的问题:从上述查询中可以看到-我必须有两个表示用户ID和用户名的串联字符串列表。 由于必须这样做,这在PHP中变得令人头疼。1.将两个连接的字符串都分解成数组2.在两个数组中运行循环并从中构造User对象3.然后将对象数组传递给
有没有更有效/更好的方法来做到这一点? 任何建议,指针将不胜感激。
您只想要一张清单吗?
SELECT g.group_id, g.group_name,
GROUP_CONCAT(g.user_id, ':', u.user_fname) AS names_and_ids
FROM group g join
user_group ug
on g.group_id = ug.group_id join
user u
on ug.user_id = u.user_id
GROUP BY g.group_id, g.group_name;
请注意以下更改:
group by
所以每个分组有一行。 group_concat()
以在一个列表中同时包含用户ID和用户名。 join
到使用显式的join
语法,而不是隐含在加入where
的条款。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.