选择父母的所有孩子

时间:2015-05-26 17:33:20

标签: mysql sql

我在MySQL

上有这张表
+----+-----------+------------+
| ID | ID_parent | name       |
+----+-----------+------------+
| 7  | 5         | ....       |
| 10 | 7         | ....       |
| 11 | 5         | ....       |
| 20 | 7         | ....       |
| 30 | 10        | ....       |
| 45 | 20        | ....       |

对于ID=7如何选择其锚点为7 =>的所有子项? (10,20,30,45)

1 个答案:

答案 0 :(得分:0)

我们直接添加一个额外的列ancestors,我们将孩子的所有祖先父母分隔为,,如此

+----+-----------+------------+------------+
| ID | ID_parent | name       | ancestors  |
+----+-----------+------------+------------+
| 7  | 5         | ....       | ,7,        |
| 10 | 7         | ....       | ,10,7,     |
| 11 | 5         | ....       | ,11,5,     |
| 20 | 7         | ....       | ,20,7,     |
| 30 | 10        | ....       | ,30,10,7,  |
| 45 | 20        | ....       | ,45,20,7,  |

在我的情况下,我选择将孩子和它的祖先放在,和我开始之间,然后我完成,可能会根据情况使用不同的方法。

所以现在我们可以轻松地获得父母的孩子或者获得孩子的父母祖先。

  • 要找到父母的所有孩子,我们会使用LIKE %,idparent,%
  • 为了找到孩子的所有父母,我们分割了这个孩子的ancestors字段 我们可以得到所有的祖先,所以我们循环它们。