Create view to load memberships
This commit is contained in:
@ -1,4 +1,5 @@
|
||||
-- This file should undo anything in `up.sql`
|
||||
drop view if exists families_memberships ;
|
||||
DROP table IF EXISTS memberships ;
|
||||
DROP table IF EXISTS families;
|
||||
DROP table IF EXISTS users;
|
@ -28,4 +28,44 @@ CREATE TABLE memberships (
|
||||
is_admin BOOLEAN NOT NULL DEFAULT FALSE,
|
||||
|
||||
PRIMARY KEY(user_id, family_id)
|
||||
);
|
||||
);
|
||||
|
||||
-- Create views
|
||||
create view
|
||||
families_memberships
|
||||
as
|
||||
select
|
||||
m.user_id ,
|
||||
m.family_id,
|
||||
m.is_admin ,
|
||||
f."name",
|
||||
f.time_create,
|
||||
f.invitation_code,
|
||||
cm.num as count_members,
|
||||
ca.num as count_admins
|
||||
from
|
||||
memberships m
|
||||
left join families f on
|
||||
f.id = m.family_id
|
||||
-- count members
|
||||
left join (
|
||||
select
|
||||
family_id ,
|
||||
count(*) as num
|
||||
from
|
||||
memberships m
|
||||
group by
|
||||
family_id) cm on
|
||||
cm.family_id = m.family_id
|
||||
-- count admins
|
||||
left join (
|
||||
select
|
||||
family_id ,
|
||||
count(*) as num
|
||||
from
|
||||
memberships m
|
||||
where
|
||||
m.is_admin = true
|
||||
group by
|
||||
family_id) ca on
|
||||
ca.family_id = m.family_id
|
Reference in New Issue
Block a user