<MyRusakov.ru />

Создание игр на Unreal Engine 5

Создание игр на Unreal Engine 5

Данный курс научит Вас созданию игр на Unreal Engine 5. Курс состоит из 12 модулей, в которых Вы с нуля освоите этот движок и сможете создавать самые разные игры.

В курсе Вы получите всю необходимую теоретическую часть, а также увидите массу практических примеров. Дополнительно, почти к каждому уроку идут упражнения для закрепления материала.

Помимо самого курса Вас ждёт ещё 8 бесплатных ценных Бонусов: «Chaos Destruction», «Разработка 2D-игры», «Динамическая смена дня и ночи», «Создание динамической погоды», «Создание искусственного интеллекта для NPC», «Создание игры под мобильные устройства», «Создание прототипа RPG с открытым миром» и и весь курс «Создание игр на Unreal Engine 4» (актуальный и в 5-й версии), включающий в себя ещё десятки часов видеоуроков.

Подробнее
Подписка

Подпишитесь на мой канал на YouTube, где я регулярно публикую новые видео.

YouTube Подписаться

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Какая тема Вас интересует больше?

WITH RECURSIVE: Пошаговое руководство по рекурсивным запросам в SQL

WITH RECURSIVE: Пошаговое руководство по рекурсивным запросам в SQL

Рекурсивные запросы — это мощный инструмент в SQL, который позволяет работать с иерархическими или графовыми структурами данных. Ключевым элементом таких запросов является конструкция WITH RECURSIVE. Она предоставляет возможность выполнить запрос к данным, где результат одного шага зависит от результата предыдущего. Это особенно полезно, например, при работе с деревьями (категории, организации, комментарии), графами (сети, маршруты), а также для расчётов с накоплением.

Синтаксис WITH RECURSIVE

WITH RECURSIVE имя_CTE (столбцы) AS (
    -- Анкор-запрос (начальная часть)
    SELECT ...
    UNION ALL
    -- Рекурсивная часть (ссылается на CTE)
    SELECT ...
    FROM имя_CTE
    JOIN ...
)
SELECT * FROM имя_CTE;

Объяснение частей:

  • Анкор-запрос — начальная выборка, с которой начинается рекурсия.
  • Рекурсивная часть — запрос, который ссылается на сам себя (имя CTE), и будет выполняться до тех пор, пока не перестанет возвращать строки.
  • UNION ALL — объединяет результаты анкор-запроса и рекурсивной части (можно использовать UNION, но тогда будут удалены дубликаты).
  • имя_CTE — общее табличное выражение (Common Table Expression), через которое строится рекурсивный процесс.

Пример: Иерархия сотрудников

Рассмотрим таблицу сотрудников:

CREATE TABLE employees (
    id SERIAL PRIMARY KEY,
    name TEXT,
    manager_id INT REFERENCES employees(id)
);

Допустим, нужно получить всех подчинённых сотрудника с id = 1, включая вложенные уровни.

WITH RECURSIVE subordinates AS (
    SELECT id, name, manager_id
    FROM employees
    WHERE id = 1

    UNION ALL

    SELECT e.id, e.name, e.manager_id
    FROM employees e
    INNER JOIN subordinates s ON e.manager_id = s.id
)
SELECT * FROM subordinates;

Что происходит:

  1. Анкор-запрос находит руководителя.
  2. Рекурсивный запрос ищет всех, у кого этот руководитель — менеджер.
  3. Процесс повторяется, пока не закончатся подчинённые.

Пример: Расчёт факториала с использованием WITH RECURSIVE

WITH RECURSIVE factorial(n, fact) AS (
    SELECT 1, 1
    UNION ALL
    SELECT n + 1, (n + 1) * fact
    FROM factorial
    WHERE n < 5
)
SELECT * FROM factorial;

Этот запрос рассчитывает факториалы от 1 до 5, возвращая значения для каждой итерации.

Предостережения и ограничения

  • Ограничения глубины. Большинство СУБД имеют лимит по числу рекурсивных шагов (по умолчанию, например, 100). Это можно изменить параметром, например, в PostgreSQL: SET max_recursion_depth = 1000;.
  • Циклы. Если не предусмотреть условия выхода, можно получить бесконечную рекурсию. Добавляйте WHERE-условия, чтобы предотвратить зацикливание.
  • Производительность. Рекурсивные запросы могут быть медленными при больших объёмах данных. Важно продумать индексацию и логику запроса.

Поддержка в разных СУБД

  • PostgreSQL — полностью поддерживает WITH RECURSIVE.
  • MySQL (начиная с 8.0) — поддерживает WITH RECURSIVE.
  • SQL Server — использует WITH, но синтаксис и поведение аналогичны.
  • SQLite — поддерживает WITH RECURSIVE.

WITH RECURSIVE — мощный способ обрабатывать иерархические или рекурсивные структуры данных прямо в SQL-запросах, без необходимости использовать внешние языки программирования. Освоение этой конструкции открывает широкие возможности для анализа данных, создания графов, расчётов и работы с вложенными структурами.

Если нужна помощь с конкретным примером под вашу задачу — дайте знать.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.