[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите дописать запрос
maximka787
ребят, подскажите пожалуйста, в чем косяк, не могу понять этот простой запрос
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
`product`
SET
`obrazec` = 1
WHERE `id` IN
(
SELECT
`id`
FROM
`product`
WHERE
`name`
LIKE '%образец%'
)

помоему в данном случае inner join нужно делать, так как update и subquery на ту же таблицу в mysql не всегда работает.

Спустя 8 минут, 4 секунды (14.12.2011 - 15:15) ИНСИ написал(а):
Цитата
так как update и subquery на ту же таблицу в mysql не всегда работает.

Я противник JOIN-ов и с таким никогда вроде не сталкивался, но всякое может быть smile.gif

Спустя 1 час, 15 минут, 9 секунд (14.12.2011 - 16:30) inpost написал(а):
maximka787
Нарушена логика. Ты не можешь обращаться к таблице, которую в данный момент обновляешь. На это будет ругаться любая 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
ааа)) ну там то вообще для меня лес)


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.