我正在尝试从分类表中获取最高级的父类id:
+-------------+----------------------+--------+
| category_id | name | parent |
+-------------+----------------------+--------+
| 1 | ELECTRONICS | NULL |
| 2 | TELEVISIONS | 1 |
| 3 | TUBE | 2 |
| 4 | LCD | 2 |
| 5 | PLASMA | 2 |
| 6 | PORTABLE ELECTRONICS | 1 |
| 7 | MP3 PLAYERS | 6 |
| 8 | FLASH | 7 |
| 9 | CD PLAYERS | 6 |
| 10 | 2 WAY RADIOS | 6 |
+-------------+----------------------+--------+可以有很多子类别,我的问题是,如何获得任何子类别的最高家长?
例如,在数据库子类别节点中,可以如下所示:
parent>>subcategory>>subsubcategory>>subsubsubcategory
另一个节点可以如下所示:
parent>>subcategory
因此,如果我使用id=6查询子类别的顶级父级,就会得到电子产品等等。
如何使用mysql获取顶级父级id?我希望这是完全可以理解的。
发布于 2011-12-08 13:07:02
您必须编写一个循环查询的存储函数:
查询查找父
SELECT parent FROM cat WHERE category_id = 6存储函数以查找顶级父级
DELIMITER $$
CREATE FUNCTION top_parent(PCat INTEGER) RETURNS INTEGER
BEGIN
DECLARE MyParent INTEGER;
DECLARE PrevParent INTEGER;
SET PrevParent = PCat;
REPEAT
SELECT parent INTO MyParent FROM cat WHERE category_id = PrevParent;
IF NOT(MyParent IS NULL) THEN
SET PrevParent = MyParent;
END IF;
UNTIL (MyParent IS NULL)
END REPEAT;
RETURN PrevParent;
END $$
DELIMITER ;如何在查询中使用该函数
SELECT name FROM cat WHERE category_id = top_parent(6)https://stackoverflow.com/questions/8324631
复制相似问题