Рассмотрим три таблицы - актеры, роли и фильмы
mysql> DESCRIBE actors;
+------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| first_name | varchar(100) | YES | MUL | NULL | |
| last_name | varchar(100) | YES | MUL | NULL | |
| gender | char(1) | YES | | NULL | |
+------------+--------------+------+-----+---------+-------+
4 rows in set (0.17 sec)
mysql> DESCRIBE roles;
+----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+--------------+------+-----+---------+-------+
| actor_id | int(11) | NO | PRI | NULL | |
| movie_id | int(11) | NO | PRI | NULL | |
| role | varchar(100) | NO | PRI | NULL | |
+----------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
mysql> DESCRIBE movies;
+-----------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | 0 | |
| name | varchar(100) | YES | MUL | NULL | |
| year | int(11) | YES | | NULL | |
| rankscore | float | YES | | NULL | |
+-----------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
В следующем списке запросов имя и фамилия всех действующих лиц действовали в mov ie 'Список Шиндлера':
mysql> SELECT first_name, last_name FROM actors WHERE id IN
-> (SELECT actor_id FROM roles WHERE movie_id IN
-> (SELECT id FROM movies WHERE name='Schindler\'s List')
-> ) ORDER BY first_name;
Предположим, если я захочу перечислить роль, которую играют актеры, вместе с их именами и фамилиями, какой запрос лучше всего подойдет для получения желаемого набора результатов или вывода? Можно отметить, что роль - это столбец в таблице ролей, который находится в подзапросе.