powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь с запросом
2 сообщений из 2, страница 1 из 1
Нужна помощь с запросом
    #39243468
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблички item-ов и price-ов
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE TABLE `prices` (
  `itemId` int(11) NOT NULL,
  `price` float NOT NULL,
  `setDate` datetime NOT NULL,
  KEY `fk_item_id_idx` (`itemId`),
  CONSTRAINT `fk_item_id` FOREIGN KEY (`itemId`) REFERENCES `item` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8;

INSERT INTO `prices` VALUES (1,12.59,'2015-02-27 17:00:00',1),(1,14.5,'2015-02-27 19:15:00',2),(3,11.5,'2015-02-27 21:35:00',3),(2,14,'2015-03-01 00:00:00',4),(1,17.31,'2015-03-02 00:00:00',5),(1,13.98,'2015-03-10 00:00:00',6),(3,26.6,'2015-04-10 00:00:00',7),(4,121,'2015-02-27 21:45:00',8);


CREATE TABLE `item` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `item_name` varchar(45) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_UNIQUE` (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

INSERT INTO `item` VALUES (1,'buble'),(2,'pumpers'),(3,'flowers'),(4,'socks'),(5,'table');



Написать запрос для обновления item-ов, у которых последняя установленная цена меньше 20 и нужно увеличить эту цену на 8

попробовала сделать так:
Код: sql
1.
2.
3.
update (select p1.itemId, p1.price as itemPrice, p1.setDate from prices p1
where setDate = (select max(p2.setDate) from prices p2 where p2.itemId=p1.itemId)
group by itemId) as S set S.itemPrice = S.itemPrice + 8 where S.itemPrice<20


вылезла ошибка:
Error Code: 1288. The target table S of the UPDATE is not updatable
Подскажите, пожалуйста, как правильно.
...
Рейтинг: 0 / 0
Нужна помощь с запросом
    #39243506
JulT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вышло как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
UPDATE prices P 
    JOIN (
           SELECT price, itemId, setDate as maxDate 
           FROM prices pr
           where setDate = (select max(p2.setDate) from prices p2 where p2.itemId=pr.itemId)   
           GROUP BY 
                  itemId
          )P1
    ON P1.itemId=P.itemId and P1.maxDate=P.setDate and P1.price < 20
    SET P.price= P.price + 8
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Нужна помощь с запросом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]