多态关联将多个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

我想从"answer"表、User.id==answer.User_id上与"User"表的内部联接以及与"UserGroup"表的内联接中查询每个单独的答案,以获得usergroupable_type=="User"和usergroupable_id==User.id的"group_id",这样我就可以联接到"group"表以获得group.name。

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

基本上,我想获得"Answer"表中每行的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

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

最新更新