diff --git a/reference/SqlExp/SqlExp.cpp b/reference/SqlExp/SqlExp.cpp index 22af07338..ecadde3f9 100644 --- a/reference/SqlExp/SqlExp.cpp +++ b/reference/SqlExp/SqlExp.cpp @@ -159,6 +159,24 @@ GUI_APP_MAIN EXP(Select(ID).From(TABLE1).Where(ID == SqlSetFrom(m))); + SqlId TN("TN"); + SqlId TNSIZE("TNSIZE"); + + EXP( + WithRecursive(TN)(ID, NAME, PARENT_ID) + .As(Select(ID, NAME, PARENT_ID).From(TREENODE).Where(IsNull(PARENT_ID)) + + + Select(TREENODE(ID, NAME, PARENT_ID)).From(TREENODE, TN) + .Where(TREENODE(PARENT_ID) == TN(ID))) + .With(TNSIZE) + .As(Select(PARENT_ID, + Select(NAME).From(TREENODE).Where(ID == TN(PARENT_ID)).AsValue(), + SqlCountRows()) + .From(TN) + .GroupBy(PARENT_ID)) + (SelectAll().From(TNSIZE)) + ); + #ifdef GENERATE_QTF qtf << "}}"; diff --git a/reference/SqlExp/SqlExp.sch b/reference/SqlExp/SqlExp.sch index e8e1a47f2..7c461f7b6 100644 --- a/reference/SqlExp/SqlExp.sch +++ b/reference/SqlExp/SqlExp.sch @@ -18,3 +18,9 @@ TABLE_(TABLE2) INT_ (COLUMN2) INT (SEQ) END_TABLE + +TABLE_(TREENODE) + INT (ID) PRIMARY_KEY + INT_ (PARENT_ID) REFERENCES(TREENODE) + STRING (NAME, 200) +END_TABLE \ No newline at end of file