mysql - SQL - 使用表格找出出版商每本书有多少种类型

标签 mysql sql

我有两个表,publishers 和 titles。

我想知道出版商每本书有多少种,比如历史,少儿等等。

这是两个表:

CREATE TABLE publishers
  (
  pub_id   CHAR(3)     NOT NULL,
  pub_name VARCHAR(20) NOT NULL,
  city     VARCHAR(15) NOT NULL,
  state    CHAR(2)             ,
  country  VARCHAR(15) NOT NULL,
  CONSTRAINT pk_publishers PRIMARY KEY (pub_id)
  )ENGINE = InnoDB;

CREATE TABLE titles
  (
  title_id   CHAR(3)      NOT NULL,
  title_name VARCHAR(40)  NOT NULL,
  type       VARCHAR(10)          ,
  pub_id     CHAR(3)      NOT NULL,
  pages      INTEGER              ,
  price      DECIMAL(5,2)         ,
  sales      INTEGER              ,
  pubdate    DATE                 ,
  contract   SMALLINT     NOT NULL,
  CONSTRAINT pk_titles PRIMARY KEY (title_id)
  )ENGINE = InnoDB;

到目前为止,我所能做的就是找出书籍类型(流派)的总数。

SELECT COUNT(DISTINCT type)
FROM publishers AS a
INNER JOIN titles AS p
ON a.pub_id = p.pub_id;

我该怎么做呢?

最佳答案

您需要使用 Group By 进行查询,如下所示

SELECT a.pub_id, a.pub_name, p.type,  COUNT(DISTINCT p.type)
FROM publishers AS a
INNER JOIN titles AS p ON a.pub_id = p.pub_id
GROUP BY a.pub_id, a.pub_name, p.type

为 pub_id 和 pub_name 添加 group by 以避免两个具有相同名称的发布者被视为一个发布者

关于mysql - SQL - 使用表格找出出版商每本书有多少种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36585839/

相关文章:

php - 重构字母通配符语句

java - JPA 映射 : "QuerySyntaxException: foobar is not mapped..."

sql - 用于 sql 表中的 "Status"列的类型

sql - MySql 字段子字符串

sql - 来自 pg_views 查询的不完整信息

java - 如何获取从单个 IP 登录的所有 UUID(MySQL 数据库 [Minecraft])

php - 在 LOAD DATA LOCAL INFILE 中收到错误消息

mysql - 选择未标记的文档

MySQL : Update multiple values based on informatin from select statement

mysql - 用于从表中选择的 SQL