此標準的SQL的解決方案是一個交叉表。您將有兩個表,類別和categories_x如下:
categories
+------------+------------+
|categoryId |name |
+------------+------------+
|1 |foo |
+------------+------------+
|2 |bar |
+------------+------------+
|3 |huh |
+------------+------------+
categories_x
+------------+------------+
|categoryId |parentId |
+------------+------------+
|3 |1 |
+------------+------------+
|3 |2 |
+------------+------------+
拿到3類別的父母你的SQL查詢看起來像:
SELECT categoryId, name
FROM categories
WHERE categoryId IN (SELECT parentId FROM categories_x WHERE categoryId = 3)