1

Anime_List と Anime_Reviews の 2 つのテーブルがあります。

Anime_List テーブルには、Anime_Reviews から平均評価を取得する「評価」フィールドがあります。ただし、一部の評価 (行) は Anime_Reviews に存在しないため、現在のクエリは平均評価のタイトルのみを返します。

SELECT Anime_List.AnimeID, Anime_List.Name, Anime_List.AnimeImage, Anime_List.Synopsis, Anime_List.Type, Anime_List.Episodes, Anime_List.Genres, AVG(Anime_Reviews.Rating) 
FROM Anime_List INNER JOIN Anime_Reviews ON Anime_List.AnimeID = Anime_Reviews.AnimeID
GROUP BY Anime_List.AnimeID, Anime_List.Name, Anime_List.AnimeImage, Anime_List.Synopsis, Anime_List.Type, Anime_List.Episodes, Anime_List.Genres

Anime_List にリストされている各タイトルの Anime_Reviews に評価 (行) がない場合、値 0.0 を返すにはどうすればよいですか?

ここに画像の説明を入力

4

2 に答える 2

2

LEFT JOINで使用COALESCE:

SELECT 
  l.AnimeID, 
  l.Name, 
  l.AnimeImage, 
  l.Synopsis, 
  l.Type, 
  l.Episodes, 
  l.Genres, 
  COALESCE(AVG(r.Rating), 0) AS Rating 
FROM Anime_List AS l
LEFT JOIN Anime_Reviews AS r ON l.AnimeID = r.AnimeID
GROUP BY l.AnimeID, 
         l.Name, 
         l.AnimeImage, 
         l.Synopsis, 
         l.Type, 
         l.Episodes, 
         l.Genres;

さまざまなタイプの SQL の詳細については、次のJOIN記事を参照してください。

于 2013-05-19T06:05:31.610 に答える