У меня есть код, который я использовал в SQL Server для создания таблицы замыкания из другой таблицы с прямыми родительскими/дочерними отношениями, я могу запускать очень простые запросы против этого, чтобы определить линию. Теперь я необходимость делать все это в MySql, но у меня возникли проблемы с рекурсивными запросами для создания таблицы закрытия ...таблица транзитных замыканий mySQL
Моего исходного запрос SQL сервера
WHILE @@ROWCOUNT>0
INSERT INTO [ClosureTable] ([Ancestor], [Descendent])
SELECT distinct [Parent],[tc].[Descendent]
FROM
[RelationshipTable]
INNER JOIN [ClosureTable] as tc
ON [Child]COLLATE DATABASE_DEFAULT =
[tc].[Ancestor]COLLATE DATABASE_DEFAULT
LEFT OUTER JOIN [ClosureTable] As tc2
ON [Parent]COLLATE DATABASE_DEFAULT =
[tc2].[Ancestor] COLLATE DATABASE_DEFAULT
AND [tc].[Descendent]COLLATE DATABASE_DEFAULT =
[tc2].[Descendent]COLLATE DATABASE_DEFAULT
Моей первой задача состоит в поиске подстановка для @@ ROWCOUNT ... но, возможно, рекурсивные запросы полностью отличаются в mySQL? Я также проверил Bill Karwin's presentation
PS. «COLLATE DATABASE_DEFAULT» было чем-то, что мне было необходимо из-за проблем с производительностью.
Спасибо.
обновления: Спасибо. Я посмотрю на это завтра. Утомлять теперь ... Кроме того, я только что нашел код на http://mondrian.pentaho.com/documentation/schema.php#Closure_tables, который является многообещающим, но у меня возникают проблемы с циклом повтора. – DougF