У меня есть таблица учетных записей, которая содержит групповую учетную запись (isgroup) с субаккаунтом (groupcode):
| code | title | groupcode | isgroup | groupindex |
|------|----------------|-----------|---------|------------|
| 100 | Current Assets | | 1 | 0 |
| 101 | Cash | 100 | 1 | 1 |
| 102 | AR | 100 | 1 | 1 |
| 103 | Property | | 1 | 0 |
| 104 | Balance | | 1 | 0 |
| 105 | Cash on hand | 101 | 1 | 2 |
| 106 | Cash in bank | 101 | 1 | 2 |
| 107 | My Bank 1 | 106 | 0 | 3 |
| 108 | Cahier 1 | 105 | 0 | 3 |
| 109 | Building 1 | 103 | 0 | 1 |
Примечания:
- Не существует стандартного способа генерации «кода». Это может быть любой (текст)
- Любая учетная запись может иметь столько дополнительных учетных записей, которые определены в «isgroup» и «groupcode».
- 'isgroup' определяет, может ли учетная запись иметь вспомогательную учетную запись.
- 'groupindex' определяет уровень субсчета. Индекс n (0) является верхним уровнем, его субсчет будет в индексе n + 1
Мне нужно отсортировать это так:
| code | title | groupcode | isgroup | groupindex |
|------ |---------------- |----------- |--------- |------------ |
| 100 | Current Assets | | 1 | 0 |
| 101 | Cash | 100 | 1 | 1 |
| 105 | Cash on hand | 101 | 1 | 2 |
| 108 | Cashier 1 | 105 | 0 | 3 |
| 106 | Cash in bank | 101 | 1 | 2 |
| 107 | My Bank 1 | 106 | 0 | 3 |
| 102 | AR | 100 | 1 | 1 |
| 103 | Property | | 1 | 0 |
| 109 | Building 1 | 103 | 0 | 1 |
| 104 | Balance | | 1 | 0 |
Сначала должна отображаться учетная запись верхнего уровня и ее дочерние учетные записи до уровня n, а затем следующая учетная запись верхнего уровня.
Я выполнил задачу на уровне приложения, используя рекурсивную функцию, и добавил строки по одной в таблицу данных. Можно ли как-то отсортировать эту таблицу в одном запросе?