多态关联查询多个 JOIN 作为单独的列

Polymorphic association query multiple JOIN as separate columns

我正在尝试提取需要访问 SQL 中的多态关联 table 两次的查询(我需要在两个 'types' 上加入它)

这是 SQL table 的结构。

Answer: id, user_id
UserGroup (polymorphic): usergroupable_type, usergroupable_id, group_id
User (polymorphic column groupable_type: 'User'): id, name
AdminUser (polymorphic column groupable_type: 'AdminUser') : id, name
Group: id, name

我想查询 'Answer' table 中的每个单独答案,在 User.id == Answer.user_id 上与 'User' table 进行内部联接], 并与 'UserGroup' table 进行内部连接以获得 usergroupable_type == 'User' 和 usergroupable_id == [=32 的 'group_id' =] 这样我就可以加入 'Group' table 以获得 Group.name.

之后,我想通过连接 [=39] 上的多态 'UserGroup' table 从 'AdminUser' table 获得 AdminUser.name =] == 'AdminUser'.

基本上,我想在 'Answer' table.

中获取每行 Group.name、AdminUser.name

如果我没看错,那就是

select g.name, au.name from answer a join usergroup ug on ug.usergroupable_id = a.user_id and ug.usergroupable_type = 'User' join group g on g.id = ug.group_id join usergroup aug on aug.group_id = g.id and usergroupable_type = 'AdminUser' join adminuser au on au.id = aug.usergroupable_id

应该这样做,但如果我误解了可能会分享一些示例数据