Учитывая идентификатор продукта, мне нужно найти самую верхнюю категорию, в которой продукт существует.
Существует 3 высших категории, назовем их A , B и C .
У меня есть таблица Categories
, которая содержит все категории. Это включает категории A , B , C , а также все подкатегории, такие как foo , bar и т. Д. ..
У меня также есть таблица с именем ProductCategories
. Эта таблица содержит ссылку на каждый продукт и категорию, к которой относится этот продукт. Если продукт относится к категории Bar , которая является подкатегорией Foo , которая является подкатегорией B , структура имеет вид B -> Foo -> Bar
, то рассматриваемый продукт будет иметь 3 записи в таблице ProductCategories
.
Это может объяснить это лучше:
Categories
+--------------------------------+
| ID | Name | ParentID |
+----+----------------+----------+
| 1 | B | Null |
+----+----------------+----------+
| 2 | Foo | 1 |
+----+----------------+----------+
| 3 | Bar | 2 |
+----+----------------+----------+
| 4 | A | Null |
+----+----------------+----------+
| 5 | Subcategory | 4 |
+----+----------------+----------+
| 6 | AnotherSubCat | 5 |
+----+----------------+----------+
| 7 | SoManySubCats | 6 |
+----+----------------+----------+
ProductCategories
+-----------+----------------+
| ProductID | ParentCategory |
+-----------+----------------+
| 50 | 2 | // Product 50 would be:
+-----------+----------------+ // B -> Foo -> Bar
| 50 | 1 |
+-----------+----------------+
| 50 | 3 |
+-----------+----------------+
| 89 | 5 | // Product 89 would be:
+-----------+----------------+ // A -> Subcategory -> AnotherSubCat -> SoManySubCats
| 89 | 4 |
+-----------+----------------+
| 89 | 7 |
+-----------+----------------+
| 89 | 6 |
+-----------+----------------+
Я ничего не могу поделать с этой структурой базы данных.
Я не могу понять, как написать запрос, в котором я могу указать идентификатор продукта, и он покажет мне высшую категорию: A , B или C .
Надеюсь, кто-нибудь сможет пролить свет на это.
О да, я использую MS Access 2003.