1

注:クエリが完了していないことはわかっています。一度に少しずつまとめようとしています。この時点でエラーが発生しました

基本的に、MySQLエラーが発生します

グループ関数の使用が無効です

理由がわかりません。

これは私が照会しているデータベースの図です:

ダイアグラム

質問は言う:

「2冊以上の本を出版した出版社の出版社名と出版された本の数を表示します。レコードは、出版された本の数の降順で並べ替え、次に出版社名の昇順で並べ替える必要があります。出力は、指定された表示と一致する必要があります以下(列見出しを含む)。」

出力は次のようになります。

出力

これは私が試しているクエリです:

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

問題はあなたのfrom声明にあります。正しい構文は次のとおりです。

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

   count(book.isbn)>2である

カウントではなく、publisherテーブルにエイリアスを指定していました。Book Count

于 2013-02-09T19:52:57.960 に答える
0

COUNT は where では使用できませんが、SELECT でのみ使用できます。グループの条件で HAVING を使用してみてください。

于 2013-02-10T18:36:21.680 に答える
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 に答える