2016-09-11 33 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 

您必須使用GROUP BY作爲聚合列movId。要獲得審閱者姓名,您必須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以及group by將爲每位評論者提供總評分/評論。

順便說一句,MYSQL不支持CHECK約束。

相關問題