2016-09-11 3 views
0

Ich muss eine SQL erstellen, die eine Liste von Benutzern enthält, und für jeden Benutzer die Nummer, die sie überprüft haben.MYSQL Wählen Sie Benutzername und SUM die Bewertungen für sie

Ich habe das versucht, aber es gab nicht die gewünschte Ausgabe, weil ich nicht wusste, wie man die SUM hinein arbeitet.

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

Jede mögliche Hilfe

hier sind meine Tabellen

 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) 
     ); 

Antwort

0

Versuchen Sie diese Abfrage:

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 

Sie haben movIdGROUP BY für aggregierte Spalte zu verwenden. Und um den Namen des Überprüfers zu erhalten, müssen Sie INNER JOIN mit revId.

+0

Danke :) perfekt – MrKeyboard

0

SELECT COUNT (*) als nein, Revid aus Bewertung Gruppe von Revid

Sie können verwenden die apprectiated werden über Abfrage

+0

Gibt es eine Möglichkeit, reviewer.name im Ergebnis anzuzeigen? – MrKeyboard

0

Versuchen Sie, explizite Join-Syntax zu verwenden (z. B. innere Verknüpfung, linke Verknüpfung, Kreuzverbindung). Weil die Beziehungen zwischen verschiedenen Tabellen mithilfe der expliziten Joinsyntax besser erklärt werden können.

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

Hinweis: Sie müssen GROUP BY Revid verwenden, um Ausgabe für jeden Kritiker zu bekommen.

Und die Verwendung der Aggregatfunktion SUM zusammen mit der Gruppe von wird die gesamte Bewertung/Überprüfung für jeden Rezensenten zur Verfügung stellen.

Btw, MYSQL unterstützt CHECK Constraint nicht.

Verwandte Themen