- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用这样的分层模型存储类别:
CATEGORIES
id | parent_id | name
---------------------
1 | 0 | Cars
2 | 0 | Planes
3 | 1 | Hatchbacks
4 | 1 | Convertibles
5 | 2 | Jets
6 | 3 | Peugeot
7 | 3 | BMW
8 | 6 | 206
9 | 6 | 306
然后我使用这些类别 ID 之一存储实际数据,如下所示:
CARS
vehicle_id | category_id | name
-------------------------------
1 | 8 | Really fast silver Peugeot 206
2 | 9 | Really fast silver Peugeot 306
3 | 5 | Really fast Boeing 747
4 | 3 | Another Peugeot but only in Hatchbacks category
在搜索任何此类数据时,我想找到所有子/孙/曾孙等节点。因此,如果有人想查看所有“汽车”,他们会看到 parent_id 为“Hatchbacks”的所有内容,以及 parent_id 为“Peugeot”的所有内容,依此类推,达到任意级别。
因此,如果我列出了 category_id 为 1、3、6 或 8 的“真正快速的 Peugeot 206”,我的查询应该能够“向上移动”树并找到任何更高的类别,即 parent /祖 parent 该子类别的。例如。搜索类别“8”中的 Peugeots 的用户应该会找到任何列有类别 6、3 或 1 的 Peugeots - 所有这些都是类别 8 的后代。
例如使用上述数据,在类别 3 中搜索“Peugeot”实际上应该会找到车辆 1、2 和 4,因为车辆 1 和 2 有一个类别祖先轨迹可以返回到类别 3。看到了吗?
抱歉,如果我没有解释清楚。它很难!不过谢谢你。
注意:我已阅读 the MySQL dev article on hierarchies .
最佳答案
规范化模型很棒,但当您实际需要查询它们时就不行了。
只需将您的类别的“路径”存储在类别表中。像这样: path =/1/3/4 并且当像“select .... where path like '/1/3/%'”这样查询你的数据库时,它将比多层次查询更简单和快速......
关于php - MySQL分层存储: searching through all parent/grandparent/etc.节点给定子节点id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5749385/
我是一名优秀的程序员,十分优秀!