【问题标题】:php&mysql find parent category namephp&mysql 查找父类名称
【发布时间】:2013-07-19 14:25:02
【问题描述】:

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

我的分类表是:

身份证 |家长 |标题 1 | 0 |第一类 2 | 1 |其他类别

我有列表类别,我想在 sql 命令中获取父母类别标题。

我试过了:

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

但它不起作用。

【问题讨论】:

标签: php mysql left-join inner-join


【解决方案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

输出:

|身份证 |标题 |家长 | PARENT_TITLE | ------------------------------------------------- | 1 |第一类 | 0 | (空) | | 2 |其他类别 | 1 |第一类 |

这里是SQLFiddle演示

【讨论】:

    【解决方案2】:

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

    SELECT cat_id FROM categories WHERE parent=0;
    

    如果你想获取某个类别的父类别

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

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

    【讨论】:

      【解决方案3】:

      您始终可以通过将 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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-09-17
        • 1970-01-01
        • 2011-09-14
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多