如何编写SQL查询获取同一产品组内的所有负责人?
解决方案
要实现同一产品组内所有产品关联组内全部负责人的需求,可以通过以下SQL语句完成:
SELECT p.ProductId, grp_owners.owner AS Responsible FROM Product p JOIN ( -- 先获取每个产品组对应的所有唯一负责人 SELECT DISTINCT p."Group", po.owner FROM Product p INNER JOIN ProductOwners po ON p.ProductId = po.ProductId ) grp_owners ON p."Group" = grp_owners."Group" ORDER BY p."Group", grp_owners.owner, p.ProductId;
逻辑说明
- 子查询部分:关联
Product和ProductOwners表,用DISTINCT过滤掉同一组内重复的负责人,得到每个产品组对应的所有唯一负责人列表。 - 主查询部分:将原
Product表与子查询结果按产品组字段关联,让每个产品和所属组内的所有负责人一一配对,从而得到每个产品对应的全部组内负责人。 - 排序处理:通过
ORDER BY让结果顺序与目标输出一致,依次按产品组、负责人名称、产品ID排序。
输出验证
执行上述SQL后,会生成与题目要求完全匹配的结果:
ProductId Responsible 1 x 2 x 3 x 1 y 2 y 3 y 1 z 2 z 3 z 4 a 4 b 5 a 5 b 6 m 7 m
内容的提问来源于stack exchange,提问作者Shiju Samuel
相关产品推荐
相关产品推荐

