Update поля таблицы из другой таблицы - MySQL

Узнай цену своей работы

Формулировка задачи:

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

Решение задачи: «Update поля таблицы из другой таблицы»

textual
Листинг программы
  1. -- phpMyAdmin SQL Dump
  2. -- version 3.4.10.1deb1
  3. -- [url]http://www.phpmyadmin.net[/url]
  4. --
  5. -- Хост: localhost
  6. -- Время создания: Сен 16 2014 г., 18:20
  7. -- Версия сервера: 5.5.38
  8. -- Версия PHP: 5.3.10-1ubuntu3.14
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11. SET time_zone = "+00:00";
  12.  
  13.  
  14. /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
  15. /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
  16. /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
  17. /*!40101 SET NAMES utf8 */;
  18.  
  19. --
  20. -- База данных: `home_task`
  21. --
  22.  
  23. -- --------------------------------------------------------
  24.  
  25. --
  26. -- Структура таблицы `clients`
  27. --
  28.  
  29. CREATE TABLE IF NOT EXISTS `clients` (
  30.   `client_id` INT(11) NOT NULL AUTO_INCREMENT,
  31.   `name` VARCHAR(255) NOT NULL,
  32.   `credit` INT(11) DEFAULT NULL,
  33.   PRIMARY KEY (`client_id`)
  34. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
  35.  
  36. --
  37. -- Дамп данных таблицы `clients`
  38. --
  39.  
  40. INSERT INTO `clients` (`client_id`, `name`, `credit`) VALUES
  41. (1, 'Vasily', NULL),
  42. (2, 'Peter', NULL),
  43. (3, 'Alex', NULL),
  44. (4, 'Vladimir', NULL);
  45.  
  46. -- --------------------------------------------------------
  47.  
  48. --
  49. -- Структура таблицы `payments`
  50. --
  51.  
  52. CREATE TABLE IF NOT EXISTS `payments` (
  53.   `payment_id` INT(11) NOT NULL AUTO_INCREMENT,
  54.   `value` DECIMAL(11,0) DEFAULT NULL,
  55.   `client_id` INT(11) NOT NULL,
  56.   PRIMARY KEY (`payment_id`)
  57. ) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;
  58.  
  59. --
  60. -- Дамп данных таблицы `payments`
  61. --
  62.  
  63. INSERT INTO `payments` (`payment_id`, `value`, `client_id`) VALUES
  64. (1, 10, 1),
  65. (2, 11, 1),
  66. (3, 9, 1),
  67. (4, 8, 1),
  68. (5, 5, 2),
  69. (6, 6, 2),
  70. (7, 7, 3),
  71. (8, 8, 3),
  72. (9, 14, 4),
  73. (10, 13, 4);
  74.  
  75. /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
  76. /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
  77. /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы