我正在尝试提取一个查询,该查询需要访问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
应该这样做,但如果我误解了,可能会分享一些样本数据