【问题标题】:Select category list have parent category name?选择类别列表是否有父类别名称?
【发布时间】:2015-10-07 23:57:45
【问题描述】:

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

类表结构如下:

分类数据:

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
...

【问题讨论】:

    标签: mysql select


    【解决方案1】:

    您可以通过使用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

    【讨论】:

    • 谢谢亲!如果我为 vn_parent 添加 WHERE 怎么样? SQL Fiddle 示例:sqlfiddle.com/#!2/b6a63/3 对不起,我的 sql 不好 :(
    • 是的..您可以根据需要添加条件。
    猜你喜欢
    • 2018-01-04
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-21
    • 2016-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多