ОБНОВЛЕНИЕ и ВЫБОР - Использование таблицы, вызванной из обновления, в запросе выбора - PullRequest
2 голосов
/ 16 октября 2010

Вот пример запроса:

UPDATE `table1` 
   SET `table1`.`field1` = (SELECT COUNT(*) 
                              FROM `table2` 
                             WHERE `table2`.`field2` = `table1`.`field2`)

MySQL выдает мне сообщение об ошибке, которое table1. field2 не найдено. Пожалуйста, совет

1 Ответ

3 голосов
/ 16 октября 2010

Я думаю, что легче понять на менее абстрактном примере.

materials стол

CREATE TABLE IF NOT EXISTS `materials` (
  `material_id` int(11) NOT NULL auto_increment,
  `name` varchar(20) NOT NULL,
  `qty` tinyint(4) default NULL,
  PRIMARY KEY  (`material_id`)
)

part_materials стол

CREATE TABLE IF NOT EXISTS `parts` (
  `part_id` int(11) NOT NULL auto_increment,
  `material_id` varchar(30) NOT NULL,
  PRIMARY KEY  (`part_id`,`material_id`)
)

Для обновления материалов. Количество деталей, использующих этот материал:

update materials set qty=(select count(*) from part_materials where material_id=materials.material_id)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...