Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц / 2 сообщений из 2, страница 1 из 1
14.05.2016, 12:19
    #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
16.05.2016, 15:05
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Выборка из нескольких таблиц / 2 сообщений из 2, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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