.
Text
================
id -- autoincrement
text -- varchar
Text_Suffix
=================
startingTextId -- fk reference to Text.id
suffixPartId -- fk reference to Text.id
So... with this example data -
Text
=================
1 | lay
2 | er
3 | ing
4 | s
Text_Suffix
==================
1 | 2
1 | 3
1 | 4
2 | 4
:
WITH All_Suffixes (id, text) as (SELECT id, text
FROM Text as a
EXCEPTION JOIN Text_Suffix as b
ON b.suffixPartId = a.id
UNION ALL
SELECT b.suffixPartId, a.text + c.text
FROM All_Suffixes as a
JOIN Text_Suffix as b
ON b.startingTextId = a.id
JOIN Text as c
ON c.id = b.suffixPartId)
SELECT *
FROM All_Suffixes
:
1 | lay
2 | layer
3 | laying
4 | lays
4 | layers