У меня возникают проблемы с пониманием использования 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.Я искал это и гуглил с рекурсивными примерами, но что-то не проходит через мою толстую голову ...
Это становится длинным, но я рад добавить схемы и примеры данных, если этопомогло бы.
Спасибо за любой предложенный совет!