Я как бы выбрасываю град Мэри здесь, когда схожу с ума, пытаясь понять, как правильно это записать. Я искал рядом и далеко и не нашел что-то, что сделало этот «щелчок» для меня еще.Преобразование SELECT с 2 JOINS и COUNT в инструкцию UPDATE
Вот ситуация: Там в 3 таблицы (столбцы, участвующие в круглых скобках):
- Prods (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_group_id, которым управляет кто-то с «LeadMGR» в своем prod_grp_mgr_nm. Я хочу обновить prods только тогда, когда есть только один prod_grp с prod_grp_mgr_nm, содержащий «LeadMGR». Цель здесь - связать каждый продукт с группой, управляемой ведущим менеджером, если существует один (и только один).
До сих пор я получил эту ЗЕЬЕСТ:
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_ids, нуждающиеся в обновлении.
Когда-либо слышал о SQLFiddle? ОЧЕНЬ ПОЛЕЗНАЯ ... специально для тестирования совместно. – DevlshOne