请考虑以下表格
group (obj_id here is user_id)
group_id obj_id role
--------------------------
100 1 A
100 2 root
100 3 B
100 4 C
notes
obj_id ref_obj_id note note_id
-------------------------------------------
1 2 10
1 3 10
1 0 foobar 10
1 4 20
1 2 20
1 0 barbaz 20
2 0 caszes 30
2 1 30
4 1 70
4 0 taz 70
4 3 70
注意:系统中的注释可以分配给多个用户(例如:管理员可以写“向2个用户发送警告”并将其链接到2个user_id
)。笔记链接到的第一个用户与其他链接的用户的存储方式不同。注释本身仅链接到第一个链接的用户。每当group.obj_id = notes.obj_id
然后ref_obj_id = 0
和note <> null
我需要概述每个用户的notes
。通常,我会通过加入group.obj_id = notes.obj_id
来做到这一点,但由于ref_obj_id
是0
(在这种情况下,我应该加入notes.obj_id
)在这里出现了错误
此系统中有4个音符(foobar,barbaz,casze和taz)。
所需的输出是:
obj_id user_is_primary notes_primary user_is_linked notes_linked
-------------------------------------------------------------------
1 2 10;20 2 30;70
2 1 30 2 10;20
3 0 2 10;70
4 1 70 1 20
如何获得此汇总结果?
我希望我能够清楚地说明情况;也许这是我的经验不足,但是我发现数据模型不是最简单的。
答案 0 :(得分:1)
您不能简单地将其放在联接的ON子句中吗?
case when notes.ref_obj_id = 0 then notes.obj_id else notes.ref_obj_id end = group.obj_id