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

问题描述

我正在尝试提取一个查询,该查询需要访问 sql 中的多态关联表两次(我需要在两种“类型”上加入它)

这是 sql 表的结构。

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

我想从“答案”表中查询每个单独的答案,在 User.id == Answer.user_id 上与“用户”表进行内连接,并与“用户组”表进行内连接以获得那些的“group_id”使用 usergroupable_type == 'User' 和 usergroupable_id == User.id 以便我可以加入到 'Group' 表以获取 Group.name。

之后,我想通过连接 usergroupable_type == 'AdminUser' 上的多态 'UserGroup' 表,从 'AdminUser' 表中获取 AdminUser.name。

基本上,我想获取“答案”表中每行的 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

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