【问题标题】:Using Count on a Join - MYSQL在连接上使用计数 - MYSQL
【发布时间】:2012-11-29 20:45:32
【问题描述】:

我有两张桌子,一张有一组团队和有关他们的信息。另一张表有关于他们玩过的游戏的信息。我想计算一个特定球队打了多少场比赛。

我在一张名为 team 的桌子上有 team_number 和 team_name。我在另一个名为played 的表上有played_team,它是team_number 的外键。

我如何编写一个 join 来计算 play_team 的出现次数并使用 team_number 和 team_name 加入它?

我正在使用 MYSQL 5.1,我希望这是有道理的。 谢谢

【问题讨论】:

  • 需要更多关于第二个表的结构和内容的信息,包含played_team字段。
  • 还需要什么其他信息?我只想将team.team_number 和team.team_name 加入played.played_team 并计算played_team 的单独出现次数。这有意义吗?
  • played_team 是否指的是“A 队”参加过的“B 队”(并且您正在尝试计算 A 队参加的次数)?或者,played_team 只是作为球队参加一场比赛的标志吗?
  • @user1745447 还建议您显示what you have tried
  • @RobertB '或者,played_team 只是作为球队参加了一场比赛的标志吗?' - 这是正确的选择。很简单,我只是想让它记录每支球队打了多少场比赛。

标签: mysql join count


【解决方案1】:

怎么样:

select teams.`team_name`, count(matches.`played_team`) 
from teams 
join matches on teams.`team_number` = matches.`played_team` 
group by teams.`team_name`

这是我使用的表格:

CREATE TABLE `teams` (
  `team_number` int(11) NOT NULL AUTO_INCREMENT,
  `team_name` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`team_number`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `teams` (`team_number`, `team_name`)
VALUES
    (1,'a'),
    (2,'b'),
    (3,'c'),
    (4,'d');

CREATE TABLE `matches` (
  `played_team` int(11) NOT NULL,
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `match_title` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `played_team` (`played_team`),
  CONSTRAINT `matches_ibfk_1` FOREIGN KEY (`played_team`) REFERENCES `teams` (`team_number`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `matches` (`played_team`, `id`, `match_title`)
VALUES
    (1,1,'match_a'),
    (1,2,'match_b'),
    (3,3,'match_c'),
    (4,4,'match_d');

这里是查询的结果:

team_name    count(matches.`played_team`)  
a            2  
c            1  
d            1

【讨论】:

  • 这是一个很好的答案,谢谢!现在我如何添加 where 子句以便它只计算 2011 年 1 月 1 日之后玩的游戏?
  • matches.date 保存比赛日期的信息
  • 这取决于matches.date是什么类型的字段。它是 UNIX 时间戳吗?如果是,那么它将是 'where matches.date > 1293840000'。
猜你喜欢
  • 1970-01-01
  • 2022-09-26
  • 2016-08-25
  • 2017-04-06
  • 1970-01-01
  • 1970-01-01
  • 2012-07-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多