Enhancements
This commit is contained in:
@@ -0,0 +1,111 @@
|
||||
-- 2. Migrate spouse data to new member records
|
||||
INSERT INTO sust.members (
|
||||
member_count, member_firstname, member_surname, member_suffix,
|
||||
member_street, member_streetnumber, member_email, member_zip,
|
||||
member_city, member_active, member_gender, member_died, member_printed,
|
||||
member_coordinates, member_geo_latitude, member_geo_longitude,
|
||||
member_membership_start, member_phone, current_state_code,
|
||||
current_state_changed_at, spouse_id
|
||||
)
|
||||
SELECT
|
||||
1, member_firstname_spouse, member_surname, member_suffix,
|
||||
member_street, member_streetnumber,
|
||||
member_email || '_partner' as member_email,
|
||||
member_zip, member_city, member_active, 'female', member_died,
|
||||
member_printed, member_coordinates, member_geo_latitude,
|
||||
member_geo_longitude, member_membership_start,
|
||||
member_phone || '_partner' as member_phone,
|
||||
current_state_code, current_state_changed_at, id
|
||||
FROM sust.members
|
||||
WHERE member_firstname_spouse IS NOT NULL AND member_firstname_spouse != '' and members.id = 93
|
||||
RETURNING id, spouse_id;
|
||||
|
||||
-- 3. Copy section memberships to new spouse members
|
||||
INSERT INTO sust.member_sections (member_id, section_id)
|
||||
SELECT
|
||||
new_spouse.id, ms.section_id
|
||||
FROM sust.member_sections ms
|
||||
JOIN sust.members orig ON ms.member_id = orig.id
|
||||
JOIN sust.members new_spouse ON new_spouse.spouse_id = orig.id
|
||||
WHERE new_spouse.spouse_id IS NOT NULL
|
||||
ON CONFLICT (member_id, section_id) DO NOTHING;
|
||||
|
||||
-- 5. Update primary members with spouse links
|
||||
UPDATE sust.members m1
|
||||
SET spouse_id = m2.id
|
||||
FROM sust.members m2
|
||||
WHERE m2.spouse_id = m1.id and m2.id = 93;
|
||||
|
||||
-- Add ONLY spouses of members ALREADY in event_attends for this event
|
||||
INSERT INTO sust.event_attends (event_id, member_id, notes)
|
||||
SELECT 1, m.spouse_id, 'Spouse of event attendee - all 3 days (Sylvia)'
|
||||
FROM sust.members m
|
||||
JOIN sust.event_attends ea ON m.id = ea.member_id
|
||||
WHERE m.spouse_id IS NOT NULL
|
||||
AND ea.event_id = 1
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM sust.event_attends ea2
|
||||
WHERE ea2.event_id = 1 AND ea2.member_id = m.spouse_id
|
||||
);
|
||||
|
||||
-- Check primary vs spouse attendees for event
|
||||
SELECT
|
||||
ea.notes,
|
||||
COUNT(*) as count,
|
||||
string_agg(m.member_firstname || ' ' || m.member_surname, ', ' ORDER BY m.member_surname) as names
|
||||
FROM sust.event_attends ea
|
||||
JOIN sust.members m ON ea.member_id = m.id
|
||||
WHERE ea.event_id = 1
|
||||
GROUP BY ea.notes
|
||||
ORDER BY ea.notes;
|
||||
|
||||
-- Add birthday column to members table
|
||||
ALTER TABLE sust.members
|
||||
ADD COLUMN member_birthday date NULL;
|
||||
|
||||
-- Add index for birthday queries
|
||||
CREATE INDEX ix_members_member_birthday ON sust.members USING btree (member_birthday);
|
||||
|
||||
-- Optional: Add check constraint for valid dates
|
||||
ALTER TABLE sust.members
|
||||
ADD CONSTRAINT members_birthday_check
|
||||
CHECK (member_birthday IS NULL OR member_birthday < CURRENT_DATE);
|
||||
|
||||
-- Much simpler: List households with attendee count + email
|
||||
SELECT
|
||||
MIN(m.member_firstname || ' ' || m.member_surname) AS household_representative,
|
||||
MIN(m.member_surname) AS surname,
|
||||
COUNT(DISTINCT ea.member_id) AS attendees,
|
||||
STRING_AGG(
|
||||
DISTINCT
|
||||
CASE
|
||||
WHEN m.member_birthday IS NOT NULL
|
||||
THEN m.member_firstname || ' (' || TO_CHAR(m.member_birthday, 'DD.MM.YYYY') || ')'
|
||||
ELSE m.member_firstname
|
||||
END,
|
||||
', '
|
||||
) AS attendees_birthdays,
|
||||
MIN(
|
||||
TRIM(
|
||||
COALESCE(m.member_street, '') || ' ' || COALESCE(m.member_streetnumber, '') ||
|
||||
', ' || COALESCE(m.member_zip::text, '') || ' ' || COALESCE(m.member_city, '')
|
||||
)
|
||||
) AS address,
|
||||
MIN(m.member_email) AS email -- household email (one per household)
|
||||
FROM sust.event_attends ea
|
||||
JOIN sust.members m ON ea.member_id = m.id
|
||||
WHERE ea.event_id = 1
|
||||
GROUP BY
|
||||
LEAST(
|
||||
m.id,
|
||||
COALESCE(
|
||||
(SELECT spouse_id FROM sust.members WHERE id = m.id),
|
||||
m.id
|
||||
)
|
||||
),
|
||||
m.member_surname
|
||||
ORDER BY m.member_surname;
|
||||
|
||||
update members set member_primary = false where id in (217,221);
|
||||
|
||||
select * from payments where member_id = 119
|
||||
Reference in New Issue
Block a user