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 */;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д