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

时间:2010-09-08 13:48:52

标签: mysql

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

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

现在外键“parent_id”包含从同一个表中获取的id,如果它是最顶层的类别,则为“0”。

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

id | parent_id | title | parent_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 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

为了帮助您了解SQL联接,请查看Jeff Atwood's Visual Guide

答案 2 :(得分:0)

你正在寻找一个OUTER JOIN :)

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