Содержит данные о пользователях
Поля:
- user_id — идентификатор пользователя, Primary Key
- email — электронная почта
- login — логин
- name — имя пользователя
- birthday — дата рождения
Содержит информацию о фильмах
Поля:
- film_id — идентификатор фильма, Primary Key
- name — название фильма
- description — описание фильма
- release_date — дата выхода
- duration — длительность фильма в минутах
- mpa_id — идентификатор рейтинга MPAA
Содержит информацию о возрастном рейтинге MPAA
Поля:
- mpa_id — идентификатор рейтинга, Primary Key
- name — название рейтинга
- description — описание, например:
- G — без возрастных ограничений
- NC-17 — лицам до 18 лет просмотр запрещён
Содержит информацию о жанрах кинематографа
Поля:
- genre_id — идентификатор жанра, Primary Key
- name — название жанра, например:
- Комедия
- Драма
Содержит информацию о жанрах фильмов из таблицы film
Поля:
- film_id (отсылает к таблице films) — идентификатор фильма, Foreign Key
- genre_id (отсылает к таблице genre) — идентификатор жанра, Foreign Key
Содержит информацию о лайках фильмов из таблицы film
Поля:
- film_id (отсылает к таблице films) — идентификатор фильма, Foreign Key
- user_id (отсылает к таблице users) — id пользователя, поставившего лайк, Foreign Key
Содержит информацию о дружбе: id1 — id2 — confirmed
Поля:
- user_id (отсылает к таблице users) — идентификатор пользователя-1, Foreign Key
- friend_id (отсылает к таблице users) — идентификатор пользователя-2, Foreign Key
- confirmed — статус дружбы (подтверждена или нет)
SELECT *
FROM films;
SELECT *
FROM films
WHERE film_id = 1;
SELECT *
FROM films
WHERE film_id IN
(SELECT film_id
FROM likes
GROUP BY film_id
ORDER BY COUNT(user_id) DESC
LIMIT 10);
SELECT *
FROM users;
SELECT *
FROM users
WHERE user_id = 1;
SELECT DISTINCT *
FROM users
WHERE user_id IN
(SELECT friend_id
FROM friendship
WHERE (user_id = 1 AND confirmed = '1')
UNION SELECT user_id
FROM friendship
WHERE (friend_id = 1 AND confirmed = '1'));
SELECT DISTINCT *
FROM users
WHERE user_id IN
(SELECT friend_id
FROM friendship
WHERE user_id = 1
AND confirmed = '1'
AND friend_id NOT IN (1, 2)
UNION SELECT user_id
FROM friendship
WHERE friend_id = 1
AND confirmed = '1'
AND user_id NOT IN (1, 2))
INTERSECT SELECT DISTINCT *
FROM users
WHERE user_id IN
(SELECT friend_id
FROM friendship
WHERE user_id = 2
AND confirmed = '1'
AND friend_id NOT IN (1, 2)
UNION SELECT user_id
FROM friendship
WHERE friend_id = 2
AND confirmed = '1'
AND user_id NOT IN (1, 2));