У меня есть две mysql таблицы: проекты и выпуски. Структура таблиц следующая:
Проекты:
+----+-------------+-----------------------------+----------+---------------+
| id | ProjectName | ProjectDescription | projType | projectStatus |
+----+-------------+-----------------------------+----------+---------------+
| 1 | RA_Surf | Retail Audit for Surf Excel | 1 | 1 |
| 2 | RA_Nirma | Retail Audit for Surf Nirma | 1 | 1 |
+----+-------------+-----------------------------+----------+---------------+
Выходы:
+----+------+------+----------------+----------------+-----------------+---
| id | pid | poid | OutletName | interviewer | Status |
+----+------+------+----------------+----------------+-----------------+---
| 1 | 1 | 11 | Ganapathy Entp | 1 | 2 |
| 2 | 1 | 21 | Suresh Entp | 1 | 2 |
| 3 | 2 | 32 | Suresh Entp | 1 | 1 |
+----+------+------+----------------+----------------+-----------------+-
PID в торговых точках ссылается на идентификатор в проектах. Я пытаюсь обновить projectStatus в проектах до 2, когда Статус всех розеток в таблице розеток, относящихся к одному и тому же pid, установлен на 2.
В приведенной ниже таблице Статус для розеток уже установлен 2, где pid равен 1. pid 1 относится к первой записи в таблице проектов с идентификатором 1.
Я пробовал следующее:
update projects
set projectStatus=2
where id=(
select projects.id
from projects
join outlets on projects.id=outlets.pid
where Status = 2
group by outlets.pid
having (count(Status) * 2) = sum(Status)
);
Я получаю ошибку ERROR 1093 (HY000): You can't specify target table 'projects' for update in FROM clause
тогда как когда я использую оператор выбора,
select id
from projects
where id = (
select projects.id
from projects
join outlets on projects.id=outlets.pid
where Status = 2
group by outlets.pid
having (count(Status) * 2) = sum(Status)
);
это работает.
Как обновить таблицу, когда состояние всех выходов в проекте обновлено до 2.