Details
-
Improvement
-
Resolution: Unresolved
-
Minor
-
None
-
None
-
None
-
None
Description
e.g.
SELECT concat(concat(ms.id, ':' ), gs.id) AS membership_id, |
ms.id AS immediate_membership_id, ms.source_id AS membership_source_id, gs.id AS group_set_id, ms.member_id,
|
gs.field_id, ms.field_id, gs.owner_id, gs.owner_attr_def_id, gs.owner_group_id, gs.owner_stem_id,
|
gs.active, gs.start_time, gs.end_time, ms.active, ms.start_time, ms.end_time, gs.DEPTH, gs.parent_id AS group_set_parent_id,
|
case when gs.start_time > ms.start_time then gs.start_time else ms.start_time end as the_start_time, |
case when gs.end_time is null then ms.end_time when ms.end_time is null then gs.end_time when gs.end_time < ms.end_time then gs.end_time else ms.end_time end as the_end_time, |
case when gs.end_time is null and ms.end_time is null then 'T' else 'F' end as the_active |
FROM grouper_pit_memberships ms, grouper_pit_group_set gs
|
WHERE ms.owner_id = gs.member_id AND ms.field_id = gs.member_field_id
|
and (
|
-- membership start overlaps the gs
|
(ms.start_time >= gs.start_time and (gs.end_time >= ms.start_time or gs.end_time is null)) |
-- membership end overlaps the gs
|
or (gs.start_time <= ms.end_time and (ms.end_time >= gs.start_time or ms.end_time is null)) |
-- membership inside the gs
|
or (ms.start_time >= gs.start_time and (ms.end_time <= gs.end_time or gs.end_time is null)) |
-- gs inside membership
|
or (gs.start_time >= ms.start_time and (gs.end_time <= ms.end_time or ms.end_time is null))) |