Update поля таблицы из другой таблицы - MySQL
Формулировка задачи:
Здравствуйте уважаемыйе!
Есть следующая задача: Существуют 2 таблицы "Клиенты" и "Платежи", дамп прилагаю:
Необходимо одним запросом (без использования вложенных) занести в поле `credit` таблицы "Clients" сумму всех платежей каждого пользователя. Я написал следующий запрос:
,
но по непонятным мне причинам он выдает ошибку: " #1111 - Invalid use of group function". Что в моем запросе не так? Прошу помочь!
-- phpMyAdmin SQL Dump -- version 4.0.10deb1 -- [url]http://www.phpmyadmin.net[/url] -- -- Хост: localhost -- Время создания: Сен 12 2014 г., 14:43 -- Версия сервера: 5.5.38-0ubuntu0.14.04.1 -- Версия PHP: 5.5.9-1ubuntu4.3 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- База данных: `task_home` -- -- -------------------------------------------------------- -- -- Структура таблицы `clients` -- CREATE TABLE IF NOT EXISTS `clients` ( `client_id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `credit` INT(11) DEFAULT NULL, PRIMARY KEY (`client_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Дамп данных таблицы `clients` -- INSERT INTO `clients` (`client_id`, `name`, `credit`) VALUES (1, 'Vasily', NULL), (2, 'Peter', NULL), (3, 'Alex', NULL), (4, 'Vladimir', NULL); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
UPDATE clients, payments SET clients.credit = SUM(payments.value) WHERE payments.client_id = payments.client_id
Попутно такой вопросик: есть ли на форуме специалист по mysql из Харькова? требуется решить небольшую задачку по mysql за вознаграждение.
Решение задачи: «Update поля таблицы из другой таблицы»
textual
Листинг программы
-- phpMyAdmin SQL Dump -- version 3.4.10.1deb1 -- [url]http://www.phpmyadmin.net[/url] -- -- Хост: localhost -- Время создания: Сен 16 2014 г., 18:20 -- Версия сервера: 5.5.38 -- Версия PHP: 5.3.10-1ubuntu3.14 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- База данных: `home_task` -- -- -------------------------------------------------------- -- -- Структура таблицы `clients` -- CREATE TABLE IF NOT EXISTS `clients` ( `client_id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(255) NOT NULL, `credit` INT(11) DEFAULT NULL, PRIMARY KEY (`client_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ; -- -- Дамп данных таблицы `clients` -- INSERT INTO `clients` (`client_id`, `name`, `credit`) VALUES (1, 'Vasily', NULL), (2, 'Peter', NULL), (3, 'Alex', NULL), (4, 'Vladimir', NULL); -- -------------------------------------------------------- -- -- Структура таблицы `payments` -- CREATE TABLE IF NOT EXISTS `payments` ( `payment_id` INT(11) NOT NULL AUTO_INCREMENT, `value` DECIMAL(11,0) DEFAULT NULL, `client_id` INT(11) NOT NULL, PRIMARY KEY (`payment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ; -- -- Дамп данных таблицы `payments` -- INSERT INTO `payments` (`payment_id`, `value`, `client_id`) VALUES (1, 10, 1), (2, 11, 1), (3, 9, 1), (4, 8, 1), (5, 5, 2), (6, 6, 2), (7, 7, 3), (8, 8, 3), (9, 14, 4), (10, 13, 4); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д