mysql - 选择类别列表有父类别名称吗?

标签 mysql select

我的问题是如何让类别列表显示在具有父名称的表中?

类别表结构如下:

enter image description here

类别数据:

ID  vn_name   en_name   parent_id   path
-----------------------------------------------
1   Sanpham   Product   0            0-1-
2   Apple     Apple     1            0-1-2-
3   Sony      Sony      1            0-1-3-
4   Iphone    Iphone    2            0-1-2-4-
5   Ipad      Ipad      2            0-1-2-5-
6   Xperia    Xperia    3            0-1-3-6-
...

那么,如何查询来获取这样的列表?

ID  vn_name   en_name   vn_parent     en_parent      
-----------------------------------------------------
1   Sanpham   Product   Root            Root         
2   Apple     Apple     Sanpham         Product      
3   Sony      Sony      Sanpham         Product
4   Iphone    Iphone    Apple           Apple
5   Ipad      Ipad      Apple           Apple
6   Xperia    Xperia    Sony            Sony
...

最佳答案

您可以通过使用 LEFT JOIN 连接表本身来实现此目的。

试试这个:

select c1.id,
       c1.vn_name,
       c1.en_name,
        -- if parent id is 0 then make it root
       if(c1.parent_id =0,'root',c2.vn_name) as vn_parent,
       if(c1.parent_id =0,'root',c2.en_name) as en_name
from Category c1 left join Category c2 on c1.parent_id=c2.id
order by c1.id

SQL fiddle 示例: http://sqlfiddle.com/#!9/b6a63/3

关于mysql - 选择类别列表有父类别名称吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32996367/

相关文章:

C# 和 HTML 敏捷包 - 返回空值

MYSQL存储过程select语句select不正确的ID

php - 如何在ci_session中保存session_data的单条数据

mysql - 主查询的值由子查询使用

php - 来自数据库的字母数字排序/排序

javascript - Jquery函数将选项列表拆分为分层选择

html - 将选择下拉列表更改为无序列表

mysql - 如何使用 Laravel Eloquent ORM 将数组值插入到我的表中?

mysql - CentOS中的mysql集群

javascript - 使用 jQuery 选择子文本