powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц
2 сообщений из 2, страница 1 из 1
Выборка из нескольких таблиц
    #39235721
HePoH
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.

Будьте добры, подскажите. На примере базы данных о фильмах (видеотеки), имеются следующие таблицы:

1. Таблица "films" с основной информацией о фильмах
idnameyeardescriptionimagelength
2. Таблица "people" с именами людей (режиссёры, актёры и т.д.)
idfull_name
3. Таблица "professions" с названием профессий: режиссёр, актёр и т.д.
idname
4. Таблица "film2person", соотносящая конкретный фильм, людей участвующих в нём и их профессии
film_idperson_idprofession_id
и другие таблицы соответственно.

Необходимо сделать запрос на выборку фильмов, объединив отдельно поле режиссёров, отдельно поле актёров и др. чтобы для каждого фильма была лишь одна запись, а в поле актёры (режиссёры и т.д.) были перечислены все актёры (режиссёры и т.д.), которые относятся к данному фильму.

Сейчас имею запрос такого вида:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
SELECT 
	`films`.`id` AS `#`, 
	`films`.`name` AS `Название фильма`, 
	`films`.`year` AS `Год`, 
	`films`.`description` AS `Описание`, 
	`films`.`image` AS `Изображение`, 
	`films`.`length` AS `Длина`,
        
GROUP_CONCAT(DISTINCT `genres`.`name` SEPARATOR ', ') AS `Жанр`,
GROUP_CONCAT(DISTINCT `people`.`full_name` SEPARATOR ', ') AS `Люди`,
GROUP_CONCAT(DISTINCT `countries`.`name` SEPARATOR ', ') AS `Страна`
        
FROM `films`

/* Жанры */
LEFT JOIN 
	`film2genre` ON `films`.`id` = `film2genre`.`film_id`
LEFT JOIN
	`genres` ON `film2genre`.`genre_id` = `genres`.`id`

/* Люди */      
LEFT JOIN 
	`film2person` ON `films`.`id` = `film2person`.`film_id`
LEFT JOIN
	`people` ON `film2person`.`person_id` = `people`.`id`
LEFT JOIN
	`professions` ON `film2person`.`profession_id` = `professions`.`id`

/* Страны */
LEFT JOIN
	`film2country` ON `films`.`id` = `film2country`.`film_id`
LEFT JOIN
	`countries` ON `film2country`.`country_id` = `countries`.`id`

GROUP BY 
	`films`.`id`



Заранее благодарю :)
...
Рейтинг: 0 / 0
Выборка из нескольких таблиц
    #39236621
Cygapb-007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
HePoHНеобходимо сделать запрос на выборку фильмов, объединив отдельно поле режиссёров, отдельно поле актёров и др. чтобы для каждого фильма была лишь одна запись, а в поле актёры (режиссёры и т.д.) были перечислены все актёры (режиссёры и т.д.), которые относятся к данному фильму.

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
SELECT 
	`films`.`id` AS `#`, 
	`films`.`name` AS `Название фильма`, 
	`films`.`year` AS `Год`, 
	`films`.`description` AS `Описание`, 
	`films`.`image` AS `Изображение`, 
	`films`.`length` AS `Длина`,
        (select GROUP_CONCAT(DISTINCT `genres`.`name` SEPARATOR ', ') 
                from `film2genre`
                JOIN `genres` ON `film2genre`.`genre_id` = `genres`.`id`
                where `films`.`id` = `film2genre`.`film_id`) AS `Жанр`,
        (select GROUP_CONCAT(DISTINCT `people`.`full_name` SEPARATOR ', ') 
                from `film2person`
                JOIN `people` ON `film2person`.`person_id` = `people`.`id`
                JOIN `professions` ON `film2person`.`profession_id` = `professions`.`id`
                where `films`.`id` = `film2person`.`film_id`)AS `Люди`,
        (select GROUP_CONCAT(DISTINCT `countries`.`name` SEPARATOR ', ') 
                from `film2country`
                JOIN `countries` ON `film2country`.`country_id` = `countries`.`id` 
                where `films`.`id` = `film2country`.`film_id`)AS `Страна`
FROM `films`
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]