在疯狂地试图弄清楚如何正确地写这个之后,我有点想在这里扔冰雹玛丽。我已经四处搜寻,但还没有找到让我“点击”的东西。
情况如下:有 3 个表(括号中涉及的列):
- 产品 (prod_id PK, prod_grp_id)
- prod_grps (prod_grp_id PK, prod_grp_mgr_nm)
- prod_grp_prods (prod_id, prod_grp_id)
一个产品可以属于多个 prod_grp。例如,棒球可以在运动 prod_grp 中,它可能具有 prod_grp_mgr_nm = "AssMGR_Bill",同时也可以在 general_merch 组中,具有 prod_grp_mgr_nm = "LeadMGR_Jake"。我需要遍历 prods 表中的每个项目并更新每个项目的“prod_grp_id”值,以便它包含由 prod_grp_mgr_nm 中具有“LeadMGR”的人管理的 prod_group_id。仅当只有一个 prod_grp 且 prod_grp_mgr_nm 包含“LeadMGR”时,我才想更新 prods。此处的目标是将每个 prod 与由牵头经理管理的组相关联(如果存在一个(并且只有一个))。
到目前为止,我有这个 SELECT 语句:
SELECT prods.prod_id
FROM prods p
INNER JOIN prod_grp_prods pgp
ON prod.prod_id = pgp.prod_id
INNER JOIN prod_grps pg
ON pgp.prod_grp_id = pg.acct_grp_id
WHERE pg.prod_grp_mgr_nm LIKE '%LeadMGR%'
GROUP BY p.prod_id HAVING COUNT(p.prod_id) = 1
ORDER BY p.prod_id`
这将返回所有需要更新的 prod_id。