Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: SELECT в UPDATE запросе
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » SELECT в UPDATE запросе

Страниц (1): [1]
 

1. brown_dev - 16 Августа, 2014 - 00:29:59 - перейти к сообщению
Привет.
Есть некий запрос:
CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `b_bans` SET `expired` = '1', `unbanned` = '1' WHERE `player_id` = 'ID' OR `player_ip` = 'IP'

Как в одном запросе (объединенном) получить данные затронутых строк или затронутой строки?
Я делал не "хорошим" путем отправляя сразу два запроса - первый, тот, что выше и второй, для получения данных:
CODE (SQL):
скопировать код в буфер обмена
  1. SELECT *
  2. FROM  `b_bans`
  3. WHERE  `player_ip` =  'IP' OR `player_id` = 'ID' AND `expired` = '1'

Но я прекрасно знаю, что можно делать выборку или объединить первый запрос с SELECT, прошу помочь.
(Добавление)
И да, структура:
CODE (htmlphp):
скопировать код в буфер обмена
  1. bid     player_ip       player_id       player_nick     admin_ip        admin_id        admin_nick      ban_type        ban_reason      ban_created     ban_length      server_ip       server_name     expired unbanned
2. Мелкий - 16 Августа, 2014 - 09:31:47 - перейти к сообщению
Postgresql - returning
Mysql - одним запросом невозможно.

Транзакционный способ в MySQL (если верно догадался, что bid - первичный ключ):
CODE (SQL):
скопировать код в буфер обмена
  1. ELECT *
  2. FROM  `b_bans`
  3. WHERE  `player_ip` =  'IP' OR `player_id` = 'ID'
  4. FOR UPDATE

CODE (SQL):
скопировать код в буфер обмена
  1. UPDATE `b_bans` SET `expired` = '1', `unbanned` = '1' WHERE `bid` IN (перечисление bid из прошлого запроса)



brown_dev пишет:
`player_ip` =  'IP' OR `player_id` = 'ID' AND `expired` = '1'

Не смешивайте И и ИЛИ в одном выражении, не выделяя скобками явным образом приоритет операций.
3. brown_dev - 16 Августа, 2014 - 14:50:41 - перейти к сообщению
Спасибо.

 

Powered by ExBB FM 1.0 RC1