За последние 24 часа нас посетили 26514 программистов и 1647 роботов. Сейчас ищут 1235 программистов ...

update запрос

Тема в разделе "MySQL", создана пользователем neverlose, 20 дек 2010.

  1. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Как обычно на уровне SQL-запроса строятся подобные запросы?

    [sql]
    UPDATE `schedule` AS `parent`
    SET `parent`.`schedule` = (
    SELECT `node`.`schedule`
    FROM `schedule` AS `node`
    WHERE
    `node`.`is_tomorrow` = 1
    AND `node`.`Line` = `parent`.`Line`
    AND `node`.`point_id` = `parent`.`point_id`
    )
    WHERE `parent`.`is_tomorrow` = 0[/sql]

    P.S. сейчас этот запрос выводит следующию ошибку:
    Код (Text):
    1. #1093 - You can't specify target table 'parent' for update in FROM clause
    Или без предварительно обработки данных (или использования временных таблиц) это сделать не возможно?
     
  2. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    [sql]UPDATE `schedule` AS `parent`

    INNER JOIN
    `schedule` AS `node` ON
    `node`.`Line` = `parent`.`Line` AND
    `node`.`point_id` = `parent`.`point_id` AND
    `node`.`is_tomorrow` = 1

    SET `parent`.`schedule` = `node`.`schedule`
    WHERE `parent`.`is_tomorrow` = 0[/sql]

    Пока сделал так, хотя вряд ли это оптимальный вариант.
     
  3. neverlose

    neverlose Активный пользователь

    С нами с:
    27 авг 2008
    Сообщения:
    1.112
    Симпатии:
    20
    Теперь его ещё бы под Zend-Framework Query Builder переделать...