1

注意:我知道查询不完整,我正在尝试一次将其拼凑起来。我此时遇到了错误

基本上,我收到了 MySQL 错误

组功能使用无效

我不知道为什么。

这是我正在查询的数据库的图表:

图表

问题说:

“显示出版商名称和出版书籍数量为那些出版过两本书的出版商。记录应该按出版书籍数量降序排列,然后是出版商名称升序排列。你的输出应该与给定的显示相匹配下方(包括列标题)。”

输出应该如下所示:

输出

这是我正在尝试的查询:

select publisher.name as "Publisher Name", count(book.isbn)
from publisher as "Book Count"
join book using (publisherID)
where count(book.isbn) > 2
group by publisher.name;
4

4 回答 4

1

尝试

SELECT MIN(p.name) AS `Publisher Name`, COUNT(b.isbn) AS `Book Count`
  FROM publisher AS p INNER JOIN 
       book      AS b ON p.PublisherID = b.PublisherID
GROUP BY p.publisherID
HAVING COUNT(b.isbn) > 2

这是sqlfiddle

于 2013-02-09T20:01:20.070 回答
0

2个问题:

  1. 您已将别名添加到表中,而不是列中。

  2. 你不能COUNT在一个WHERE条件下使用。你需要使用HAVING.

尝试以下操作:

SELECT
    publisher.name as `Publisher Name`,
    COUNT(book.isbn) as `Book Count`
FROM
    publisher 
JOIN
    book USING (publisherID)
GROUP BY
    publisher.name
HAVING
    `Book Count` > 2
于 2013-02-09T19:57:50.410 回答
0

您不能在 where 中使用 COUNT,而只能在 SELECT 中使用。尝试在组上使用 HAVING 和条件。

于 2013-02-10T18:36:21.680 回答
0

问题出在你的from陈述中。正确的语法是:

select publisher.name as "Publisher Name", count(book.isbn)  as "Book Count"
from publisher join book
     using (publisherID)
group by publisher.name;

   计数(book.isbn)> 2

你给publisher表一个别名Book Count,而不是计数。

于 2013-02-09T19:52:57.960 回答