У меня есть таблица categories
:
ID | NAME | PARENT ID | POSITION | LEVEL | ORDER
----------------------------------------------------------------------------
1 | root | -1 | 0x | 0 | 255
2 | cars | 1 | 0x58 | 1 | 10
5 | trucks | 1 | 0x68 | 1 | 10
13 | city cars | 2 | 0x5AC0 | 2 | 255
14 | offroad cars | 2 | 0x5B40 | 2 | 255
где:
ID int ident
NAME nvarchar(255)
PARENT ID int
POSITION hierarchyid
LEVEL hierarchyid GetLevel()
ORDER tinyint
Эта таблица model
указывает название модели и категорию, к которой она относится. Пример:
ID | NAME | CATEGORY
-----------------------------
1 | Civic | 13
2 | Pajero | 14
3 | 815 | 5
4 | Avensis | 13
где:
ID int ident
NAME nvarchar(255)
CATEGORY int link to ID category table
То, что я пытаюсь сделать, - это показать:
- все модели - рекурсивно покажет все модели из корня,
- модели в категории
cars
(включая автомобили)
- модели из городских автомобилей (или их детей, если таковые имеются)
Как использовать иерархию для такой фильтрации и как объединить таблицу для результатов с моделями? Это быстрый способ показать все результаты модели с определенного уровня?