0

次のように定義された書籍データベースの 2 つのテーブルがあります。

CREATE TABLE Publisher(
   PublisherID INT,
   Name VARCHAR(50) NOT NULL,
   City VARCHAR(30),
   StateCode CHAR(2),
   constraint publisher_publisherID_pk PRIMARY KEY (publisherID),
   constraint publisher_statecode_fk FOREIGN KEY (StateCode) REFERENCES State(StateCode)
 );

CREATE TABLE Book(
   ISBN        CHAR(13),
   Title       VARCHAR(70) NOT NULL,
   Description VARCHAR(100),
   Category    INT,
   Edition     CHAR(30),
   PublisherID INT         NOT NULL,
   constraint book_ISBN_pk PRIMARY KEY (ISBN),
   constraint book_category_fk FOREIGN KEY (Category) REFERENCES Category(CatID),
   constraint book_publisherID_fk FOREIGN KEY (PublisherID) REFERENCES Publisher(PublisherID)
);

出版者の名前に「read」があり、2 冊以上の本を出版している出版社の出版社名と出版された本の数を表示したいと考えています。

これまでのところ、私はこれを持っています:

SELECT Publisher.Name AS 'Publisher Name', COUNT(*) AS 'Book Count' 
FROM Book 
LEFT JOIN Publisher USING (PublisherID) 
WHERE Publisher.Name LIKE '%read%' 
GROUP BY Publisher.Name;

しかし、結果を true で返されたすべてのものに制限する方法がわかりません。LIMIT を機能させることができず、ここで使用するのが正しいかどうかさえわかりません。また、「Book Count」(列名はこれでなければなりません) を参照する方法もわかりません。Google で検索すると、行数を制限してのみ返されます (類似の検索語)。

私の現在の出力はこれです:

+----------------------------------+------------+
| Publisher Name                   | Book Count |
+----------------------------------+------------+
| EZRead Masterpiece Comics        |          3 |
| ReadEmandWeep Romance Publishing |          5 |
| ReadMeFirst House of Publishing  |          2 |
| ReadMeNext House of Publishing   |          2 |
+----------------------------------+------------+
4 rows in set (0.00 sec)

しかし、私はこれが欲しい:

+----------------------------------+------------+
| Publisher Name                   | Book Count |
+----------------------------------+------------+
| EZRead Masterpiece Comics        |          3 |
| ReadEmandWeep Romance Publishing |          5 |
+----------------------------------+------------+
2 rows in set (0.00 sec)

助けてくれてありがとう、うまくいけば私は十分に明確でした。

4

1 に答える 1

1

あなたはもうすぐそこにいます。

SELECT Publisher.Name AS 'Publisher Name', COUNT(*) AS 'Book Count' 
FROM Book 
LEFT JOIN Publisher USING (PublisherID)
WHERE Publisher.Name LIKE '%read%' 
GROUP BY Publisher.Name
HAVING `Book Count` > 2        ## Notice the HAVING clause?;

編集

HAVINGの後になければならないことを忘れていましたGROUP BY

編集2

スペースを含む列エイリアスの場合、バッククォートが機能します。

于 2013-02-19T05:50:30.483 に答える