Запрос для трех таблиц - MySQL
Формулировка задачи:
Доброго времени суток!
Имеется три таблицы Table_1, Table_2, Table_3 (на рисунке).
В Table_2 несколько записей связанных с Table_1. Из Table_2 нужно выбрать одну случайную запись.
Решение задачи: «Запрос для трех таблиц»
textual
Листинг программы
SELECT `t1`.`name`, `t2`.`path`, `t3`.`rate` FROM ( SELECT * FROM `table_2` ORDER BY RAND() ) AS `t2` LEFT JOIN `table_1` AS `t1` ON `t1`.`id` = `t2`.`id_table_1` LEFT JOIN `table_3` AS `t3` ON `t3`.`id_table_2` = `t2`.`id` GROUP BY `t1`.`id`;
Объяснение кода листинга программы
- Запрос на языке SQL выбирает три поля:
name
изtable_1
,path
изtable_2
иrate
изtable_3
. - Вложенный запрос в скобках выбирает все строки из
table_2
и сортирует их по случайному порядку с помощью функцииRAND()
. - Внешний запрос объединяет результаты вложенного запроса с
table_1
по полюid
и сtable_3
по полюid_table_2
. - Результаты объединения упорядочиваются по полю
id
изtable_1
. - Результаты запроса группируются по полю
id
изtable_1
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д