Filmorate project.
DataBase structure
Friends relationships explanation
SELECT * FROM films;
SELECT * FROM users;
SELECT * FROM users WHERE user_id IN (SELECT user2_id FROM friendship WHERE user1_id = 1 AND friendship_status = true) OR user_id IN (SELECT user1_id FROM friendship WHERE user2_id = 1 AND friendship_status = true) ORDER BY user_id;
SELECT * FROM users WHERE user_id IN (SELECT user2_id FROM friendship WHERE user1_id = 1 AND friendship_status = true) OR user_id IN (SELECT user1_id FROM friendship WHERE user2_id = 1 AND friendship_status = true) INTERSECT SELECT * FROM users WHERE user_id IN (SELECT user2_id FROM friendship WHERE user1_id = 2 AND friendship_status = true) OR user_id IN (SELECT user1_id FROM friendship WHERE user2_id = 2 AND friendship_status = true) ORDER BY user_id;
SELECT f.* FROM films f join likes l ON f.film_id = l.film_id GROUP BY f.film_id ORDER BY COUNT(l.user_id) DESC LIMIT 10;
SELECT f.* FROM films f join likes l ON f.film_id = l.film_id WHERE f.film_id IN (SELECT film_id FROM genre_link WHERE genre_id IN (SELECT genre_id FROM genre WHERE genre_name = 'Drama')) GROUP BY f.film_id ORDER BY COUNT(l.user_id) DESC LIMIT 10;