php& mysql查找父类别名称

时间:2013-07-19 14:25:02

标签: php mysql left-join inner-join

我有关于内连接,左连接命令的问题。

我的类别表是:

ID  | parent | title
1   | 0      | First Category
2   | 1      | Other Category

我有列表分类,我想在sql命令获得父类别标题。

我试过了:

SELECT cat.ID, cat.title, cat2.title as parentcatname, cat.parent
FROM   categories cat INNER JOIN categories cat2 ON cat2.ID=cat.parent

但是没有用。

3 个答案:

答案 0 :(得分:1)

您必须使用LEFT JOIN才能提取所有类别,无论他们是否为父类别。 INNER JOIN过滤掉所有不匹配项。

SELECT c.id, c.title, c.parent, p.title parent_title 
  FROM categories c LEFT JOIN categories p 
    ON c.parent = p.id

输出:

| ID |          TITLE | PARENT |   PARENT_TITLE |
-------------------------------------------------
|  1 | First Category |      0 |         (null) |
|  2 | Other Category |      1 | First Category |

这是 SQLFiddle 演示

答案 1 :(得分:0)

如果您想获取所有父类别,请尝试查询

SELECT cat_id FROM categories WHERE parent=0;

如果您想获得类别的父类别

SELECT C.cat_id,P.title FROM categories C LEFT JOIN category P ON P.parent = C.cat_id;

我没有测试过上面的代码,但它应该可以正常工作。

答案 2 :(得分:0)

您可以随时通过将SQL输入验证器(在线加载),phpMyAdmin的SQL选项卡或带有SQL验证的编辑器来调试SQL。它看起来像你在类别表选择附近有一个小错字。

如果您的SQL不能正常工作,请务必将其愚蠢。请注意,JOIN(内部,左侧,右侧等)用于连接两个或更多表。

SELECT 
    one.ID, one.title, one.parent, one.title, one.parent, one.title
FROM 
    categories one 
LEFT JOIN 
    categories two
ON 
    one.parent = two.ID