1

私はSQLデータベースプロジェクトに取り組んでおり、3冊以上の本を書いた著者の名前を見つけることになっています。私のコードは以下の通りです。エラーは、AにFROMがないことを示しており、さまざまなCOUNTオプションを試しました。私は多くの異なるバリエーションを試しましたが、それでも出力を生成することができません。

SELECT A.alastname FROM Author 
WHERE (SELECT COUNT(*) FROM Book B WHERE B.btitle = A.btitle AND B.title > 2);

著者には名前が含まれ、ブックにはタイトルやページなどが含まれます。また、援助と入札を含むAuthor_Bookもあります。結合を使用する必要がありますか?演算子を使用せずに3冊以上の本を指定する方法がまだわかりません。私は答えを求めているのではなく、可能であればいくつかの指針を求めています:)。

4

4 に答える 4

2

別名がありません。

SELECT A.alastname FROM Author A 
WHERE (SELECT COUNT(*) FROM Book B WHERE B.btitle = A.btitle AND B.title > 2);
于 2013-03-07T04:48:54.170 に答える
1

元のクエリは有効な SQL ではありません。

あなたはおそらくこれを意味しました:

SELECT A.alastname
FROM Author A
WHERE (SELECT count(*) FROM Book B WHERE B.btitle = A.btitle) > 2
于 2013-03-07T04:58:05.900 に答える
0

Author テーブルのエイリアスが見つからず、それを A として参照しようとしていたようです

SELECT A.alastname FROM Author as A 
WHERE (SELECT COUNT(*) FROM Book B WHERE B.btitle = A.btitle AND B.title > 2);
于 2013-03-07T04:49:56.700 に答える
0

あなたが言ったように、 Author<->Book の関係テーブルがあるので、それを使用する必要があります:

SELECT A.alastname
FROM Author A
JOIN
(
 SELECT aid FROM Author_Book GROUP BY aid HAVING count(bid)>=3
) T
on (A.id=T.aid)
于 2013-03-07T06:44:07.273 に答える