Вот вывод, тут все работает.
SELECT
`tab1`.*
FROM
`tab1`
LEFT JOIN
`tab2`
ON
`tab2`.`id_product` = `tab1`.`id`
WHERE
`tab2`.`id_product` IS NULL
Нужно эти же строки обновить act = 0
UPDATE
`tab1`
SET
`tab1`.`act` = '0'
LEFT JOIN
`tab2`
ON
`tab2`.`id_product` = `tab1`.`id`
WHERE
`tab2`.`id_product` IS NULL
Спустя 5 минут, 49 секунд (15.05.2012 - 14:50) Игорь_Vasinsky написал(а):
не уверен канешь, что можно в условии левую таблицу юзать
скорее всего наврядли.
UPDATE `tab1` SET `tab1`.`act` = 0 WHERE `tab2`.`id_product` = `tab1`.`id` AND `tab2`.`id_product` = 0
скорее всего наврядли.
Спустя 11 минут, 12 секунд (15.05.2012 - 15:02) maximka787 написал(а):
Игорь_Vasinsky
Запрос выдает ошибку Unknown column 'tab2.id_product' in 'where clause'
ну это было бы просто)
А мой запрос в корне не верный, или ситуация с UPDATE намного сложнее чем SELECT и DELETE ?
Запрос выдает ошибку Unknown column 'tab2.id_product' in 'where clause'
ну это было бы просто)
А мой запрос в корне не верный, или ситуация с UPDATE намного сложнее чем SELECT и DELETE ?
Спустя 1 минута, 2 секунды (15.05.2012 - 15:03) Игорь_Vasinsky написал(а):
да. для UPDATE JOINов не придумали. обновление одной таблицы, без левых выборок с других.
Спустя 8 минут, 49 секунд (15.05.2012 - 15:11) maximka787 написал(а):
Цитата (Игорь_Vasinsky @ 15.05.2012 - 11:03) |
для UPDATE JOINов не придумали. |
ну и дела, не знал такого, ну ладно, мне без LEFT JOIN никак, тк простой JOIN ищет как =, а в этом и суть..
Спустя 32 минуты, 18 секунд (15.05.2012 - 15:44) Renden написал(а):
maximka787
Помоему я как-то делал через INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
но тут не тот случай, тк я понимаю у тебя не уникальные значения..
Помоему я как-то делал через INSERT ... SELECT ... ON DUPLICATE KEY UPDATE
но тут не тот случай, тк я понимаю у тебя не уникальные значения..
Спустя 5 минут, 59 секунд (15.05.2012 - 15:50) Игорь_Vasinsky написал(а):
ON DUPLICATE KEY UPDATE всего лишь обновит запись если она существует или создаст если нет таковой, но при условии что для поля стоит UNIQUE
_____________
..Работает - не трогай!