Для знатоков SQL

119
02 декабря 2020, 19:00

Всем добрый день! Интересует вопрос как с помощью SQL запроса можно сделать многомерный массив.

Итак. Есть 3 таблицы например

CREATE TABLE IF NOT EXISTS `films` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) NOT NULL,
  `id_janr` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--

-- Дамп данных таблицы films

INSERT INTO `films` (`id`, `name`, `id_janr`) VALUES
(1, 'Кошмар на улице вязов 1', 1),
(2, 'Кошмар на улице вязов 2', 1);

CREATE TABLE IF NOT EXISTS `janr` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `title` varchar(100) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

--

-- Дамп данных таблицы janr

INSERT INTO `janr` (`id`, `title`) VALUES
(1, 'Ужасы');
CREATE TABLE IF NOT EXISTS `rejeser` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `firstname` varchar(100) NOT NULL,
  `id_janr` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;

--

-- Дамп данных таблицы rejeser

INSERT INTO `rejeser` (`id`, `firstname`, `id_janr`) VALUES
(1, 'Режисер 1', 1),
(2, 'Режисер 2', 1),
(3, 'Режисер 3', 1),
(4, 'Режисер 4', 1);

Нужно сделать запрос который бы позволял при выборке из таблицы жанр в результат получать вот такой массив.

Array
(
    [1] => Array
        (
            [title] => Ужасы
            [films] => Array
                (
                    [1] => Array
                        (
                            [name] => Кошммар на улице вязов
                        )
                    [2] => Array
                        (
                            [name] => Кошммар на улице вязов 2
                        )
                )
            [rejeser] => Array
                (
                    [1] => Array
                        (
                            [firstname] => Режисер 1
                        )
                    [2] => Array
                        (
                            [firstname] => Режисер 2
                        )
                    [3] => Array
                        (
                            [firstname] => Режисер 3
                        )
                )
        )
)

Я вижу это как то так

SELECT 
  id, 
  title, 
  films as (SELECT * FROM films WHERE id_janr = id), 
  rejeser as (SELECT * FROM rejeser WHERE id_janr = id) 
FROM janr 

но естественно этот вариант не работает. Какие еще могут быть варианты рабочие для получения нужного результата ?

READ ALSO
Проблема с password_verify

Проблема с password_verify

есть проблема при проверке пароля при первой проверке пароля сценарий стопорится на password_verify и урл принимает вид http://site/login?login=admin&password=12345,...

120
Установка ImageMagick на OpenServer

Установка ImageMagick на OpenServer

Кто знает как использовать ImageMagick в OpenServer? Скачал OpenServer вместе с ImageMagick, но при попытке им воспользоваться выдает ошибку Fatal error: Uncaught Error: Class 'Imagick'...

136
Подсказки по местонахождению скрипта в VS Code

Подсказки по местонахождению скрипта в VS Code

Как в VS Code сделать возможность по наведению курсором мыши на какую-либо функцию, объект , чтобы при этом как в sublime text выводилась подсказка...

132
Как отдать файл на скачивание в фреймворке yii2?

Как отдать файл на скачивание в фреймворке yii2?

У меня есть такой пост запрос

146