mysql - SQL - 获取地球上人们的认证总数(3 个单独的表)

标签 mysql sql

老实说,我不知道如何解决这个问题。我已经SELECT name了,然后我就迷路了(有点尴尬)。

问题:找出按星球分组的人们持有的认证数量。这应该有两列,第一列,“名称”将是至少具有一个认证的行星的名称。第二列应该是“CertCount”,并且将是来自该星球的人持有的认证数量,例如,如果 Lee 获得了“Viper”和“Mechanic”认证,而 Kara 获得了“Viper”认证,并且他们都来自 Caprica,那么 caprica 的“CertCount”应该是 3:

CREATE TABLE `bsg_cert` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB

CREATE TABLE `bsg_cert_people` (
  `cid` int(11) NOT NULL DEFAULT '0',
  `pid` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`cid`,`pid`),
  KEY `pid` (`pid`),
  CONSTRAINT `bsg_cert_people_ibfk_1` FOREIGN KEY (`cid`) REFERENCES `bsg_cert` (`id`),
  CONSTRAINT `bsg_cert_people_ibfk_2` FOREIGN KEY (`pid`) REFERENCES `bsg_people` (`id`)
) ENGINE=InnoDB

CREATE TABLE `bsg_people` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `fname` varchar(255) NOT NULL,
  `lname` varchar(255) DEFAULT NULL,
  `homeworld` int(11) DEFAULT NULL,
  `age` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `homeworld` (`homeworld`),
  CONSTRAINT `bsg_people_ibfk_1` FOREIGN KEY (`homeworld`) REFERENCES `bsg_planets` (`id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE=InnoDB

CREATE TABLE `bsg_planets` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `population` bigint(20) DEFAULT NULL,
  `language` varchar(255) DEFAULT NULL,
  `capital` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB

最佳答案

将它们全部加入并使用 group by 进行计数应该可以解决问题:

SELECT  planet.name ,
    COUNT(*) AS cert_count
FROM    bsg_cert_people people_cert
    JOIN bsg_people people ON people.id = people_cert.pid
    JOIN bsg_planet planet ON people.homeworld = planet.id
GROUP BY planet.name

关于mysql - SQL - 获取地球上人们的认证总数(3 个单独的表),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40251841/

相关文章:

javascript - pg-promise 删除元组集的快速方法

php - 数据库中的 OpenID 重复结果

mysql - 使用 SQL 连接表作为额外列

mysql - 错误 #1452 - 为同一个 PK 分配 FK 两次

MySql 从查询中获取第一个和最后一个结果

php - 无法将查询结果用作变量

sql - 在 SQL 中选择西里尔字符

mysql - 基于内容或 View 创建表格更好?

mysql - 用户仅具有选择的 mysql 权限,但 phpMyAdmin 允许编辑

mysql - Mysql减法的奇怪结果