Запрос для трех таблиц - 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`;

Объяснение кода листинга программы

  1. Запрос на языке SQL выбирает три поля: name из table_1, path из table_2 и rate из table_3.
  2. Вложенный запрос в скобках выбирает все строки из table_2 и сортирует их по случайному порядку с помощью функции RAND().
  3. Внешний запрос объединяет результаты вложенного запроса с table_1 по полю id и с table_3 по полю id_table_2.
  4. Результаты объединения упорядочиваются по полю id из table_1.
  5. Результаты запроса группируются по полю id из table_1.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.6 из 5