Qairat
@Qairat
frontend developer, angular 2+

Как написать рекурсию в mysql?

Всем привет!
Такая задача. Надо найти общую сумму популяции.
Надо именно сделать через рекурсию.
Пытаюсь так сделать:
CREATE PROCEDURE `GetChildrenObjects3`
  (IN `Parent` BIGINT, OUT `total` BIGINT)
BEGIN
  DECLARE population int;
  DECLARE total2 int DEFAULT 0 ;
  DECLARE irows int ;

  SET irows = (SELECT COUNT(d.Population) FROM MDepartments d
    LEFT JOIN Localities l ON d.LocalityId = l.Id WHERE d.ParentId = Parent AND Type = 0);

  IF irows>=1 THEN

    SET total = (SELECT SUM(d.Population) FROM MDepartments d
      LEFT JOIN Localities l ON d.LocalityId = l.Id WHERE d.ParentId = Parent AND Type = 0);

    SELECT d.MOId, SUM(d.Population)  FROM MDepartments d
      LEFT JOIN Localities l ON d.LocalityId = l.Id WHERE d.ParentId = Parent AND Type = 0;

    CALL GetChildrenObjects3(d.MOId);
  ELSE
    SET total = NULL;
  END IF;
END

Есть таблицы, и у них может быть дочерние объекты. Надо и туда заходить, и суммировать популяцию на родительские популяции.
Помогите как?
  • Вопрос задан
  • 284 просмотра
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега MySQL
{PHP, MySql, HTML, JS, CSS} developer
Это решение в стиле - "давайте на ралли поедем на асфальтовом катке, им мы управлять умеем, и едет не очень быстро, с трассы не вылетим!".

Выберите все значения запросами в что-то более программное, и там крутите, будет быстрее, надежнее и логичнее.
Например питон, пхп, ява, да практически любой язык какой знаете будет лучше чем так.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы