根据具有来自另一个表的父子项的值对表进行排序

时间:2019-02-15 09:48:09

标签: mysql

我有一个要循环浏览的表(模型)。它有一列称为类别的列,该列链接到另一个表(类别)。

id  name     parent
1   Audio    NULL
2   Video    NULL
3   Monitor  2
4   Monitor  1
5   Light    NULL
6   HD       3
7   4K       4

使用下面的sql,我得到级别的名称,但是我希望获得整个路径,以便能够基于完整的类别路径进行排序。例如,id 7现在给我“ 4K”,但我想获取“ Video / Monitor / 4K”,id 4->“ Audio / Monitor”。如您所见,可能存在具有相同名称的子类别。

SELECT 
m.id AS Id,
c.name AS Category,
m.model AS Model 
FROM models m
LEFT JOIN categories c ON m.category=c.id
GROUP BY  m.id
ORDER BY Category

目前,我有一个php循环,该循环以models表中的id开头,然后检查父级是否为NULL,创建新的sql等,直到父级为NULL。必须有更好的方法吗?

更新:服务器正在运行MySQL 5.6,暂时无法更新
更新2:我之前看到过建议的重复项,但就我而言,我知道孩子的身份证,并且我想找到所有父母。

0 个答案:

没有答案