Как вы делаете иерархический план счетов, используя MySQL WITH RECURSIVE? - PullRequest
0 голосов
/ 29 декабря 2018

У меня возникают проблемы с пониманием использования WITH RECURSIVE для реализации общих запросов и отчетов с использованием модели смежности, где одна запись ссылается на свою «супер» запись.

У меня есть несколько таблиц InnoDB, которые имеютполя, которые являются внешними ключами одной и той же таблицы.

Например, я реализовал систему учета с двумя записями с таблицей 'general_journal', в которой хранятся (среди прочих) Amount, Source и Destinationколонны.Последние два столбца ссылаются на таблицу «счетов», используя стандартные семизначные номера счетов, которые расположены в иерархии.

Таким образом, в таблице «счетов» будет (например) строка с ID, содержащая «1000000».', Super, содержащий NULL, и Name, содержащий' Assets. '

Затем есть другие строки, такие как' 1000010 '(ID),' 1000000 '(Super),' Cash Assets '(Name) и «1000011» (ID), «1000010» (Super), «Chequing» (Name).

Я в тупике от того, как создать стандарт »Балансовые отчеты »и« Отчеты о прибылях и убытках »для стандартного финансового отчета, где различные субсчета будут показывать свою собственную сумму (сумма столбцов« общего журнала »Amount с той же учетной записью Source минус те, у которых естьодин и тот же Destination аккаунт), и каждый супер-аккаунт будет отображать сумму всех сводок суб-аккаунтов, которые они содержат.

Еще один пример, на который я наткнулся ... наше некоммерческое совместноеоп разводит животных.Каждая запись о животном имеет ID и поля Dam и Sire, которые содержат ID матери и отца этого животного, соответственно.Я не могу понять, как эта информация может быть представлена ​​в виде отчета "родословная".Примеры, которые я нашел, не так легко изменить, чтобы показать двойную рекурсивную ситуацию.

Я использую MariaDB 10.2.13.Я искал это и гуглил с рекурсивными примерами, но что-то не проходит через мою толстую голову ...

Это становится длинным, но я рад добавить схемы и примеры данных, если этопомогло бы.

Спасибо за любой предложенный совет!

...