Я хотел бы найти сумму столбца в одном запросе, полученном при объединении нескольких таблиц.Сумма баллов за несколько таблиц в MySQL
У меня есть таблица Деяний и таблица, в которой отображаются пользователи, выполняющие Activity, а также таблицу, отображающую команды для выполненных действий. Оба пользователя и команды могут выполнять одно и то же действие несколько раз.
Каждое действие стоит определенного количества очков, и я хотел бы узнать общее количество баллов для данного пользователя, объединив их действия с деятельностью своей команды.
Я пробовал различные комбинации соединений между тремя таблицами, но не могу выработать правильный запрос, чтобы суммировать очки для данного пользователя.
Следующая SQL создаст минимальную версию этой установки:
CREATE TABLE `activity` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL DEFAULT '',
`points` INT(10) UNSIGNED NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=INNODB;
CREATE TABLE `team_action` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`activity_id` INT(11) UNSIGNED NOT NULL,
`date` DATETIME NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `team_action_ibfk_1` FOREIGN KEY (`activity_id`) REFERENCES `activity` (`id`)
) ENGINE=INNODB;
CREATE TABLE `user_action` (
`id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
`activity_id` INT(11) UNSIGNED NOT NULL,
`date` DATETIME NOT NULL,
PRIMARY KEY (`id`),
CONSTRAINT `user_action_ibfk_1` FOREIGN KEY (`activity_id`) REFERENCES `activity` (`id`)
) ENGINE=INNODB;
INSERT INTO `activity` (`id`, `name`, `points`)
VALUES (1,'Running',10), (2,'Swimming',20), (3,'Hiking',30), (4,'Cycling',40);
INSERT INTO `team_action` (`id`, `activity_id`, `date`)
VALUES (1,2,'2012-05-22 14:32:31'), (2,4,'2012-05-22 14:32:36');
INSERT INTO `user_action` (`id`, `activity_id`, `date`)
VALUES (1,1,'2012-05-22 14:32:08'), (2,1,'2012-05-22 14:32:18'), (3,3,'2012-05-22 14:32:23');
что пользователь отношения и команды? Я думаю, что чего-то не хватает. не можете найти связь между 'team_action' и' user_action', чтобы получить сумму для пользователя. – Darshana
Существуют таблицы для пользователя и команды, а у Пользователя есть внешний ключ для Команды. Для этого примера я не верю, что показать это отношение строго необходимо? По сути, меня интересует только то, как я могу правильно суммировать для набора строк user_action и rows_action. Имеет ли это смысл? Я могу расширить схему, если вы думаете, что это поможет. –