Это приложение - небольшая социальная сеть, которая позволяет оценивать фильмы и искать самые популярые, а так же добавлять других пользователей в друзья
Созданиефильма:
INSERT INTO films (name,
description,
release_date,
duration)
VALUES (?, ?, ?, ?);
INSERT INTO film_genres (film_id,
genre_id)
VALUES (?, ?);Обновлениефильма:
UPDATE
films
SET name = ?,
description = ?,
release_date = ?,
duration = ?
WHERE id = ?;
INSERT INTO film_genres (film_id,
genre_id)
VALUES (?, ?);
DELETE FROM film_genres
WHERE film_id = ?
AND genre_id = ?;Получениефильма поid:
SELECT f.id,
f.name,
f.description,
f.release_date,
f.duration,
mp.name mpa_rating,
STRING_AGG(g.name, ', ') genres
FROM films f
LEFT JOIN mpa_ratings mp ON f.mpa_rating_id = mp.id
LEFT JOIN film_genres fg ON f.film_id = fg.film_id
LEFT JOIN genres g ON fg.genre_id = g.id
WHERE f.id = ?
GROUP BY f.id;Получение всехфильмов:
SELECT f.id,
f.name,
f.description,
f.release_date,
f.duration,
mp.name mpa_rating,
STRING_AGG(g.name, ', ') genres
FROM films f
LEFT JOIN mpa_ratings mp ON f.mpa_rating_id = mp.id
LEFT JOIN film_genres fg ON f.id = fg.film_id
LEFT JOIN genres g ON fg.genre_id = g.id
GROUP BY f.id;Получение топ-N (по количеству лайков)фильмов:
SELECT f.id,
f.name,
f.description,
f.release_date,
f.duration,
mp.name mpa_rating,
STRING_AGG(g.name, ', ') genres,
COUNT(fl.user_id) AS like_count
FROM films f
LEFT JOIN mpa_ratings mp ON f.mpa_rating_id = mp.id
LEFT JOIN film_genres fg ON f.film_id = fg.film_id
LEFT JOIN genres g ON fg.genre_id = g.id
LEFT JOIN likes l ON f.film_id = l.film_id
GROUP BY f.id
ORDER BY like_count DESC LIMIT ?;Добавлениелайка фильму:
INSERT INTO likes (user_id,
film_id)
VALUES (?, ?);Удалениелайка с фильма:
DELETE FROM likes
WHERE (user_id = ?
AND film_id = ?);Созданиепользователя:
INSERT INTO users (email,
login,
name,
birthday)
VALUES (?, ?, ?, ?)Обновлениепользователя:
UPDATE
users
SET email = ?,
login = ?,
name = ?,
birthday = ?
WHERE id = ?Получениепользователяпо идентификатору:
SELECT *
FROM users
WHERE id = ?Получение всехпользователей:
SELECT *
FROM usersПолучение друзейпользователя:
SELECT *
FROM users
WHERE id IN (
SELECT friend_id
FROM friendships
WHERE is_accepted = 1
AND user_id = ?
)Получение общих друзейс пользователем:
SELECT *
FROM users
WHERE id IN (
SELECT friend_id
FROM friendships
WHERE is_accepted = 1
AND user_id = ?
)
AND id IN (
SELECT friend_id
FROM friendships
WHERE is_accepted = 1
AND user_id = ?
)Отправка заявки на добавление в друзьяпользователя:
INSERT INTO friendships (user_id,
friend_id,
is_accepted)
VALUES (?, ?, 0);
INSERT INTO friendships (user_id,
friend_id,
is_accepted)
VALUES (?, ?, 0);Принятие заявки на добавление в друзьяпользователя:
UPDATE friendships
SET is_accepted = 1
WHERE user_id = ?
AND friend_id = ?;
UPDATE friendships
SET is_accepted = 1
WHERE user_id = ?
AND friend_id = ?;Удаление из друзейпользователя:
DELETE FROM friendships
WHERE user_id = ?
AND friend_id = ?;
DELETE FROM friendships
WHERE user_id = ?
AND friend_id = ?;