UPDATE
`product`
SET
`obrazec` = 1
WHERE
(
SELECT
*
FROM
`product`
WHERE
`name`
LIKE '%образец%'
)
Запрос простой, надо значению `obrazec` поставить цифру 1 если в самом названии этой строки встречается слово %образец%
Сам запрос верен. просто грамматика не верна
Спустя 20 минут, 45 секунд (14.12.2011 - 13:16) Winston написал(а):
Вроде все нормально.. Попробуй or die(mysql_error()); дописать...
Спустя 55 секунд (14.12.2011 - 13:17) ИНСИ написал(а):
Цитата |
простой запрос |
:) Это не простой, ты его усложнил.
UPDATE
`product`
SET
`obrazec` = 1
WHERE
`name` LIKE '%образец%'
Спустя 1 минута, 25 секунд (14.12.2011 - 13:19) maximka787 написал(а):
INSIDIOUS
Спасибо, во я дурак, ну это после сложного так на все смотришь)))
Спасибо, во я дурак, ну это после сложного так на все смотришь)))
Спустя 2 минуты, 1 секунда (14.12.2011 - 13:21) ИНСИ написал(а):
maximka787 или может ты просто экспериментируешь? Тогда попробуй так:
UPDATE
`product`
SET
`obrazec` = 1
WHERE `id` IN
(
SELECT
`id`
FROM
`product`
WHERE
`name`
LIKE '%образец%'
)
Спустя 7 минут, 10 секунд (14.12.2011 - 13:28) maximka787 написал(а):
INSIDIOUS
да не не, спасиб)))))
да не не, спасиб)))))
Спустя 1 час, 39 минут, 27 секунд (14.12.2011 - 15:07) SlavaFr написал(а):
Цитата (INSIDIOUS @ 14.12.2011 - 10:21) |
maximka787 или может ты просто экспериментируешь? Тогда попробуй так:UPDATE |
помоему в данном случае inner join нужно делать, так как update и subquery на ту же таблицу в mysql не всегда работает.
Спустя 8 минут, 4 секунды (14.12.2011 - 15:15) ИНСИ написал(а):
Цитата |
так как update и subquery на ту же таблицу в mysql не всегда работает. |
Я противник JOIN-ов и с таким никогда вроде не сталкивался, но всякое может быть
Спустя 1 час, 15 минут, 9 секунд (14.12.2011 - 16:30) inpost написал(а):
maximka787
Нарушена логика. Ты не можешь обращаться к таблице, которую в данный момент обновляешь. На это будет ругаться любая SQL.
Теперь есть трюк: http://phpforum.su/index.php?showtopic=44172 , посмотри, как я вышел, когда использовал внутреннюю переменную: @minimum, то есть двойные скобки и уже работает!
Хотя так работать будет медленнее, хочешь добиться лучшего результата, сделай двумя отдельными запросами.
Нарушена логика. Ты не можешь обращаться к таблице, которую в данный момент обновляешь. На это будет ругаться любая SQL.
Теперь есть трюк: http://phpforum.su/index.php?showtopic=44172 , посмотри, как я вышел, когда использовал внутреннюю переменную: @minimum, то есть двойные скобки и уже работает!
Хотя так работать будет медленнее, хочешь добиться лучшего результата, сделай двумя отдельными запросами.
Спустя 22 часа, 8 минут, 20 секунд (15.12.2011 - 14:39) SlavaFr написал(а):
Цитата (inpost @ 14.12.2011 - 13:30) |
Нарушена логика |
честно говоря, я не вижу, чтоб логика была нарушена.
Просто mysql выпендривается если подзапросы делать.
Такой же запрос с join будет без проблем работать
#если не ошибаюсь
UPDATE
`product` as p1 inner join `product` as p2 on
p1.id=p2.id
SET
p1.`obrazec` = 1
WHERE p2.`name`
LIKE '%образец%';
Спустя 54 минуты, 52 секунды (15.12.2011 - 15:34) maximka787 написал(а):
Да не, ребят, пример INSIDIOUS-а работает. это ж вообще элементарный пример. это меня понесло в боле сложное.
Спустя 48 минут, 36 секунд (15.12.2011 - 16:22) SlavaFr написал(а):
Цитата (maximka787 @ 15.12.2011 - 12:34) |
Да не, ребят, пример INSIDIOUS-а работает. это ж вообще элементарный пример. это меня понесло в боле сложное. |
Да нам с твоим примером все ясно, мы решили как раз о более сложном поговорить
Спустя 49 секунд (15.12.2011 - 16:23) maximka787 написал(а):
SlavaFr
ааа)) ну там то вообще для меня лес)
ааа)) ну там то вообще для меня лес)
_____________
..Работает - не трогай!