Рассмотрим следующие таблицы
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
s).Первый пользователь, с которым связана заметка, хранится не так, как другие связанные пользователи.Само примечание связано только с первым связанным пользователем.Всякий раз, когда 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, caszes и 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
Как мне получить этот агрегированный результат?
Я надеюсь, что смог ясно объяснить ситуацию;возможно, это моя неопытность, но я считаю модель данных не самой простой.