起初我认为这是个简单的问题,但一直未能解决。
我有一张桌子users(id, username, email)
和另一张桌子groups(id, name)
。我得到了第三个表,其中存储了其他两个表之间的多对多关系groups_users(groupId, userId)
。
我想查询以获取某个用户所属的组。我还希望那些查询的组包含其各自用户的嵌套数据。转换为JSON后,将类似于:
[
{
id: 1,
name: 'foo group',
users: [
{
id: 1,
name: 'bar',
email: '[email protected]'
}
]
]
我应该对Postgres进行原始查询的任何想法吗?我知道我将不得不使用Postgres的功能,这也是问题的一部分。提前致谢。
找出用户属于哪个组(g)。然后将其与groups_users合并以获得那些user_id,并将其与用户一起加入user_info。
select *
from (
groups_users natural join
(select groupId from groups_users where userId = ?) g
)
join users on groups_users.userId = users.id
如果您需要组名,也可以加入该组名。
这是另一种方式:
select *
from groups_users
join users on group_users.userId = users.id
where groups_users.gropId in (select groupId from groups_users where userId = ?)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句