2016-04-12 3 views
1

を持っている見つけるためにテーブルを使用しました。SQL - 私は2つのテーブル、出版社とタイトルを持っているどのように多くの種類の各書籍の出版社が

は私がなどの歴史、子供、ここで

として出版社が持っている各書籍の多くの種類は、二つのテーブルであるかを知りたい:

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; 

どのようにすればいいですか?

+0

[ 'GROUP BY'](https://msdn.microsoft.com/en-us/library/ms177673.aspx)。 pub_id'と 'type'が'によってクエリおよびグループを使用し、それらを数えます。 –

答えて

0

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 

以下のようにあなたがグループ化でクエリを持っている必要があり

1つのパブリッシャーと考えるべきでは同じ名前を持つ2つの出版社を避けるために、pub_idカラムとPUB_NAMEためでグループを追加

0

は、このアウトを試してみてください:あなたが調べたいhttp://sqlfiddle.com/#!9/9331e/24

SELECT p.pub_name, t.type, count(t.type) 
FROM publishers AS p 
INNER JOIN titles AS t on t.pub_id = p.pub_id 
GROUP BY p.pub_id, t.type 
関連する問題