代码之家  ›  专栏  ›  技术社区  ›  dhh

从一个表中选择父名称为的类别

  •  1
  • dhh  · 技术社区  · 14 年前

    我有一个现有的产品数据库,我正在为它编写一个管理工具(在PHP中)。 数据库包含以下“类别”表:

    Table Categories
    --------------------
    PK | id
    FK | parent_id
       | title
    

    现在,外键“parent_id”包含来自同一个表的id,或者如果是最顶层的类别,则包含“0”。

    为了创建一个概述,我现在需要一个mysql语句,它会产生以下数据:

    id | parent_id | title | parent_title
    

    我不知道父母的头衔在哪里。我创建了以下语句:

    SELECT 
      c1.id, 
      c1.parent_id, 
      c1.title, 
      c2.title as `parent_title`
    FROM 
      categories c1, 
      categories c2 
    WHERE 
      c1.parent_id = c2.id
    

    我现在只获取所有具有父类别的类别。

    应该很简单,可能已经在这里得到了回答。我想我只是没有找到合适的词来搜索现有的文章来找到它。

    谢谢你的帮助, 丹尼尔

    3 回复  |  直到 14 年前
        1
  •  3
  •   D'Arcy Rittich    14 年前

    你可以使用 LEFT OUTER JOIN 为此:

    SELECT c1.id,  
      c1.parent_id,  
      c1.title,  
      c2.title as `parent_title` 
    FROM categories c1  
    left outer join categories c2 on c1.parent_id = c2.id 
    
        2
  •  1
  •   Dave McClelland    14 年前

    为了帮助您在SQL联接中保持清醒,请签出 Jeff Atwood's Visual Guide

        3
  •  0
  •   sled    14 年前

    您正在寻找外部联接:)

    请参见这里: http://www.quackit.com/sql/tutorial/sql_outer_join.cfm