1

BOOKSTORE データベースの次のデータベース スキーマを検討してください。

Books (bookid, title, author, year)
Customers (customerid, name, email)
Purchases (customerid, bookid, year)
Reviews (customerid, bookid, rating)
Pricing (bookid, format, price)

この質問があります:

「CIVIL WAR」に関する書籍 (タイトルに「CIVIL WAR」が含まれている) の評価情報 (ショーのタイトル、著者、平均評価) を検索します。

そして、これまでに得たものは次のとおりです。

SELECT title, author, AVG(r1.rating)
FROM Books, Reviews
WHERE title LIKE '%CIVIL WAR%'

しかし、それは間違っています:(どんな助けもいただければ幸いです:D

4

2 に答える 2

3

これは、指定した構造に従います。

SELECT books.title, books.author, AVG(reviews.rating)
  FROM books, reviews
 WHERE books.bookid = reviews.bookid 
   AND books.title LIKE '%CIVIL WAR%'
GROUP BY books.title, books.author

次のように、句JOINで結合を行うのではなく、を使用することを検討することもできます。WHERE

FROM books
JOIN reviews ON reviews.bookid = books.bookid

また、より複雑なクエリを短縮するため、テーブルにエイリアスを使用することを検討してください。

FROM `Books b` 

--Will enable you to write 
 AND b.title LIKE '%CIVIL WAR%'
于 2013-10-11T12:10:51.233 に答える
2

これを試して:

SELECT B.title, B.author, AVG(R.rating) Avg_Rating
FROM Books B
  JOIN Reviews R
   ON B.bookid = R.bookid
WHERE B.title LIKE '%CIVIL WAR%'
GROUP BY B.title, B.author

複数のタイトル/著者がある場合は、bookid でグループ化することもできます。

SELECT B.title, B.author, AVG(R.rating) Avg_Rating
FROM Books B
  JOIN Reviews R
   ON B.bookid = R.bookid
WHERE B.title LIKE '%CIVIL WAR%'
GROUP BY B.bookid, B.title, B.author
于 2013-10-11T12:12:49.887 に答える