NOTE. I accidentally put here another sentence of the question (a massive apology on my part), I updated this post from March 14 to 23:21 with the right question.
I spent several hours trying to figure this issue out without help, but I realized that I spent too much time on work and had to ask someone before. I had a decent crack in it and came so close, but I can’t get the final solution that I need. I should get:
For all cases where the same reviewer rated the same film twice and gave it a higher rating a second time, return the reviewer’s name and film’s name.
This is the request I managed to get here:
SELECT reviewer.name, movie.title, rating.stars FROM (reviewer JOIN rating ON reviewer.rid = rating.rid) JOIN movie ON movie.mid = rating.mid GROUP BY reviewer.name HAVING COUNT(*) >= 2 ORDER BY reviewer.name DESC
(I have the feeling that the WHERE clause is missing from the above query, but I'm not sure where to place it)
(From what I learned, RIGHT and FULL OUTER JOINs are not currently supported in SQLite)
And here are the tables and data (in the photos) ...



... and the DB code ...
drop table if exists Movie; drop table if exists Reviewer; drop table if exists Rating; create table Movie(mID int, title text, year int, director text); create table Reviewer(rID int, name text); create table Rating(rID int, mID int, stars int, ratingDate date); insert into Movie values(101, 'Gone with the Wind', 1939, 'Victor Fleming'); insert into Movie values(102, 'Star Wars', 1977, 'George Lucas'); insert into Movie values(103, 'The Sound of Music', 1965, 'Robert Wise'); insert into Movie values(104, 'ET', 1982, 'Steven Spielberg'); insert into Movie values(105, 'Titanic', 1997, 'James Cameron'); insert into Movie values(106, 'Snow White', 1937, null); insert into Movie values(107, 'Avatar', 2009, 'James Cameron'); insert into Movie values(108, 'Raiders of the Lost Ark', 1981, 'Steven Spielberg'); insert into Reviewer values(201, 'Sarah Martinez'); insert into Reviewer values(202, 'Daniel Lewis'); insert into Reviewer values(203, 'Brittany Harris'); insert into Reviewer values(204, 'Mike Anderson'); insert into Reviewer values(205, 'Chris Jackson'); insert into Reviewer values(206, 'Elizabeth Thomas'); insert into Reviewer values(207, 'James Cameron'); insert into Reviewer values(208, 'Ashley White'); insert into Rating values(201, 101, 2, '2011-01-22'); insert into Rating values(201, 101, 4, '2011-01-27'); insert into Rating values(202, 106, 4, null); insert into Rating values(203, 103, 2, '2011-01-20'); insert into Rating values(203, 108, 4, '2011-01-12'); insert into Rating values(203, 108, 2, '2011-01-30'); insert into Rating values(204, 101, 3, '2011-01-09'); insert into Rating values(205, 103, 3, '2011-01-27'); insert into Rating values(205, 104, 2, '2011-01-22'); insert into Rating values(205, 108, 4, null); insert into Rating values(206, 107, 3, '2011-01-15'); insert into Rating values(206, 106, 5, '2011-01-19'); insert into Rating values(207, 107, 5, '2011-01-20'); insert into Rating values(208, 104, 3, '2011-01-02');
I have another relatively similar question like this, but if I get some help with this, I should be able to apply patterns and methods from this to the next.
Thanks in advance!:)