0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 6
1

Update таблицы с услоыием с этой же таблицы

23.11.2011, 02:36. Показов 2075. Ответов 3
Метки нет (Все метки)

Здравствуйте!

Таблица
SQL
1
Items (ID, product_id, STATUS)
нужно написать запрос, который изменит статус на 2 для максимального ид при условии, что (product_id=5
и ststus=1)

пробовал писать:
SQL
1
UPDATE Items it1 SET it1.status=2 WHERE (it1.id=(SELECT MAX(it2.id) FROM Items it2 WHERE it2.products_id=5 AND it2.status=1));
но не работает(
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2011, 02:36
Ответы с готовыми решениями:

Как указать в запросе имя таблицы, записанное в ячейке этой таблицы
Добрый день. Помогите пожалуйста решить проблему: Есть таблица 'budget' со следующей...

Update поля таблицы из другой таблицы
Здравствуйте уважаемыйе форумчане! Есть следующая задача: Существуют 2 таблицы "Клиенты" и...

Запрос с update таблицы
Добрый день, подскажите пожалуйста с составлением запроса. Имеются две таблицы search и picture. В...

Массовый UPDATE many-to-many таблицы
Доброго времени суток! К сожалению в MySQL я дуб-дубом поэтому хотел спросить у вас о способах...

3
13 / 13 / 0
Регистрация: 15.01.2010
Сообщений: 144
23.11.2011, 11:07 2
Цитата Сообщение от Kostiyan Посмотреть сообщение
пробовал писать:
Update Items it1 set it1.status=2 where (it1.id=(select max(it2.id) from Items it2 where it2.products_id=5 and it2.status=1));
если я не ошыбаюсь, алиасы задаются так:
SQL Alias Syntax for Tables
SQL
1
2
3
SELECT column_name(s)
FROM TABLE_NAME
AS alias_name
или

SQL Alias Syntax for Columns
SQL
1
2
SELECT column_name AS alias_name
FROM TABLE_NAME
Добавлено через 7 минут
но может впринципе так попробуй:
SQL
1
UPDATE Items SET STATUS=2 WHERE (it1.id=(SELECT MAX(it2.id) FROM Items it2 WHERE it2.products_id=5 AND it2.status=1));
возможно апдейт не хотел работать из за того, что ч предложении SET нельзя использовать имя таблицы в качестве префикса имени столбца.
0
0 / 0 / 0
Регистрация: 22.03.2011
Сообщений: 6
23.11.2011, 17:15  [ТС] 3
SQL
1
UPDATE Items SET STATUS=2 WHERE (it1.id=(SELECT MAX(it2.id) FROM Items it2 WHERE it2.products_id=5 AND it2.status=1));
возможно апдейт не хотел работать из за того, что ч предложении SET нельзя использовать имя таблицы в качестве префикса имени столбца.
Не работает, выдаёт ошибку:
You can't specify target table 'Items' for update in FROM clause
0
13 / 13 / 0
Регистрация: 15.01.2010
Сообщений: 144
23.11.2011, 17:37 4
тогда может такой вариант с алиасом пройдет.
SQL
1
2
3
4
UPDATE Items AS it1 SET it1.status=2 
WHERE (it1.id=(SELECT MAX(it2.id) 
FROM Items it2 
WHERE it2.products_id=5 AND it2.STATUS=1));
Добавлено через 2 минуты
возможно еще что имя столбца STATUS SQL видик как служебное слово или команду. но это догадка. если есть желание, можете переименовать столбец STATUS.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.11.2011, 17:37

Помощь в написании контрольных, курсовых и дипломных работ здесь.

UPDATE с условием из другой таблицы
Доброго времени суток! Подскажите, пожалуйста, как на IBM DB2 реализовать SQL-запрос, который будет...

UPDATE таблицы из двух других
Есть 3 таблицы: Туры, Туристы, Заявки_в_туры. В Таблице Туры есть Цена В Таблице Туристы -...

UPDATE две таблицы, двойной инкремент
Здравствуйте! Имеется две таблицы: table1 и table2. Пытаюсь выполнить следующий запрос UPDATE...

UPDATE таблицы, как лучше реализовать?
Есть таблица такого вида (в ней храниться информация о товарах интернет магазина) |id|...{some...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.