Есть 2 таблицы
--------------------------
- tabl_1 --
--------------------------
- id | tip | name --
--------------------------
- 1 | 7 | Имя --
--------------------------
- 2 | 1 | Имя --
--------------------------
- 3 | 4 | Имя --
--------------------------
----------------------------
- tabl_2 -
----------------------------
- id | ref | sosto9nie -
----------------------------
- 1 | 1 | 1 -
----------------------------
- 2 | 2 | 1 -
----------------------------
- 3 | 2 | 0 -
----------------------------
Обе таблицы связываются между собой id первой = ref второй
Нужно изменить "sosto9nie" из второй таблицы если tip из 1 равен например 7
Как бы это организовать?
Спустя 56 минут, 41 секунда (19.02.2012 - 19:26) killer8080 написал(а):
UPDATE `tabl_2`
SET `sosto9nie` = '<новое значение>'
WHERE `id` IN (
SELECT `t2`.`id`
FROM `tabl_2` `t2`
LEFT JOIN `tabl_1` `t1` ON `t1`.`id` = `t2`.`ref`
WHERE `t1`.`tip` = 7
)
Спустя 3 часа, 55 минут, 37 секунд (19.02.2012 - 23:22) dsa написал(а):
killer8080, так mysql ругается #1093 - You can't specify target table 'tabl_2' for update in FROM clause - что то вроде нельзя указывать обновляемую таблицу в запросе
Спустя 1 минута, 5 секунд (19.02.2012 - 23:23) nugle написал(а):
так попробуй
UPDATE `tabl_2`
SET `sosto9nie` = '<новое значение>'
WHERE `id` IN (
SELECT `t2`.`id`
FROM `tabl_2` as `t2`
LEFT JOIN `tabl_1` as `t1` ON `t1`.`id` = `t2`.`ref`
WHERE `t1`.`tip` = 7
)
Спустя 13 минут, 44 секунды (19.02.2012 - 23:37) dadli написал(а):
dsa
как варянт
как варянт
UPDATE tabl_2 SET sosto9nie = '<новое значение>'
WHERE ref IN (
SELECT id FROM tabl_1 WHERE tip = 7
)
Спустя 11 минут, 26 секунд (19.02.2012 - 23:48) killer8080 написал(а):
dsa
исправил
исправил
UPDATE `tabl_2`
SET `sosto9nie` = 3
WHERE `id` IN (
SELECT `id` FROM (
SELECT `t2`.`id`
FROM `tabl_2` `t2`
LEFT JOIN `tabl_1` `t1` ON `t1`.`id` = `t2`.`ref`
WHERE `t1`.`tip` = 7
) AS `t`
)
Спустя 5 минут, 4 секунды (19.02.2012 - 23:53) dsa написал(а):
dadli в принципе вроде бы логично на нем наверное и остановлюсь ))
Спасибо, всем плюсую
Спасибо, всем плюсую
Спустя 4 минуты, 50 секунд (19.02.2012 - 23:58) dsa написал(а):
killer8080 да я полчаса назад наверно натыкался на какую то статью где описывался примерно такой же запрос но но что то не хочется делать эти 3 этажные запросы ))
Спустя 1 минута, 23 секунды (19.02.2012 - 23:59) killer8080 написал(а):
Цитата (dsa @ 19.02.2012 - 22:58) |
killer8080 да я полчаса назад наверно натыкался на какую то статью где описывался примерно такой же запрос но но что то не хочется делать эти 3 этажные запросы )) |
и правильно dadli предложил лучшее решение