2016-09-11 4 views
0

ユーザのリストを含むsqlを作成する必要があり、ユーザごとに を確認しました。MYSQLユーザ名を選択し、それらのレビューを合計します

私はこれを試しましたが、私はそれをSUMの仕組みを知りませんでしたので、望ましい出力を得られませんでした。

SELECT review.revID, reviewer.name FROM review , reviewer WHERE review.revID = reviewer.revID 

どのような援助はここ

をapprectiatedされるだろう、私のテーブルは

 CREATE TABLE reviewer (
      revID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
      name VARCHAR(40), 
      email VARCHAR(40), 
      password VARCHAR(125) 
     ); 

     CREATE TABLE movie (
     movID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, 
     title VARCHAR(30), 
     release_date date 
     ); 


     CREATE TABLE review (
      revID INT, 
      movID INT, 
      rating INT CHECK (rating > 0 AND rating < 10) , 
      review_date datetime(6), 
      comment VARCHAR (300), 
      helpful INT, 
      PRIMARY KEY (revID,movID), 

      FOREIGN KEY (revID) 
      REFERENCES reviewer(revID), 
      FOREIGN KEY (movID) 
      REFERENCES movie(movID) 
     ); 

答えて

0

このクエリを試す:

SELECT 
count(movId) AS Total_Movie_Count, 
r.name AS Reviewer_Name, 
r.revId as Reviewer_Id 
FROM review 
INNER JOIN reviewer r on r.revId = review.revId 
GROUP BY review.revId 

集計列movIdにはGROUP BYを使用する必要があります。レビューアの名前を取得するには、INNER JOINrevIdとする必要があります。

+0

ありがとうございます:)完璧 – MrKeyboard

0

SELECT COUNT(*)がないようにしている、REVID

による審査 グループからREVIDあなたは使用することができます上記のクエリ

+0

結果にreviewer.nameを表示する方法はありますか? – MrKeyboard

0

明示的な結合構文(たとえば、内部結合、左結合、クロス結合)を使用してください。明示的な結合構文を使用すると、異なるテーブル間の関係がよりよく説明されるためです。

SELECT  
review.revID, 
reviewer.name, 
SUM(rating) As totalReview  
FROM review  
INNER JOIN reviewer ON review.revID = reviewer.revID  
GROUP BY reviewer.revID; 

注:あなたは各レビューのために出力を得るために、GROUP BY REVIDを使用する必要があります。

集計関数SUMをグループと一緒に使用すると、各レビューアの総合評価/レビューを提供します。

Btw、MYSQLはCHECKという制約をサポートしていません。

関連する問題