
Номер | Таблица | Состав таблицы |
---|---|---|
1 | users | Пользователи |
2 | friends | Таблица друзей |
3 | mpa | Рейтинг фильмов |
4 | films | Список фильмов |
5 | genres | Жанры |
6 | film_genre | Связь фильм - жанр |
7 | likes | Связь фильм - пользователь |
Запросы
- Запрос с сортиров по количеству лайков:
SELECT f.*
, m.*
, g.*
FROM films f
LEFT JOIN (SELECT film_id
, COUNT(user_id) as count_likes
FROM likes
GROUP BY film_id) cf
ON cf.film_id = f.film_id
LEFT JOIN mpa m
ON f.mpa_id = m.mpa_id
LEFT JOIN film_genre fg
ON f.film_id = fg.film_id
LEFT JOIN genres g
ON g.genre_id = fg.genre_id
ORDER BY count_likes;
- Запрос для заполнения фильмов
SELECT f.*
, m.*
, g.*
FROM films f
LEFT JOIN mpa m
ON f.mpa_id = m.mpa_id
LEFT JOIN film_genre fg
ON f.film_id = fg.film_id
LEFT JOIN genres g
ON g.genre_id = fg.genre_id
WHERE f.film_id = ?
- Запрос на получение общих друзей
SELECT u.*
FROM friends fi
INNER JOIN friends fo
ON fi.friend_id = fo.friend_id
AND fi.user_id = ?
AND fo.user_id = ?
INNER JOIN users u
ON u.user_id = fo.friend_id
- Запрос на получение друзей
SELECT u.*
FROM users u
INNER JOIN (SELECT *
FROM friends where user_id = ?) f
ON u.user_id = f.friend_id