如何查询存储于PNMS表的社交活动所有参与人员的first_name与last_name
问题分析
- 现有查询的JOIN链路仅覆盖「社交活动关联负责高管→对应成员→PNMS」路径,未处理社交活动直接关联的普通参与成员,无法返回所有参与人员
- INNER JOIN 会自动过滤
se.executive_id为空的社交活动记录,WHERE条件里的se.member_id IS NOT NULL完全不会生效,导致只能返回有关联高管的活动记录 - 当前JOIN逻辑是把高管和成员做关联拼接,而非分别提取两类参与人员,自然每个活动只能返回1条结果
调整后的查询方案
使用UNION ALL分别查询负责高管、普通参与成员两类人群的信息,再合并结果集,即可实现同个活动返回多名关联人员的需求:
-- 查询社交活动关联的负责高管 SELECT pm.first_name, pm.last_name, se.socialevent_id, se.title, '负责高管' AS participant_type -- 可选字段,用于区分人员类型,不需要可删除 FROM 354groupb1.social_event se INNER JOIN 354groupb1.executive e ON se.executive_id = e.executive_id INNER JOIN 354groupb1.member m ON e.member_id = m.member_id INNER JOIN 354groupb1.pnms pm ON m.net_id = pm.net_id WHERE se.executive_id IS NOT NULL UNION ALL -- 查询社交活动关联的普通参与成员 SELECT pm.first_name, pm.last_name, se.socialevent_id, se.title, '参与成员' AS participant_type -- 可选字段,用于区分人员类型,不需要可删除 FROM 354groupb1.social_event se INNER JOIN 354groupb1.member m ON se.member_id = m.member_id INNER JOIN 354groupb1.pnms pm ON m.net_id = pm.net_id WHERE se.member_id IS NOT NULL;
如果同一个人同时是活动的负责高管和参与成员,不需要重复返回记录时,把UNION ALL替换为UNION即可实现自动去重。
内容的提问来源于stack exchange,提问作者zniperxpert games and tips
相关产品推荐
相关产品推荐

