Mysql 如何从子类别id获取父类别?

Mysql 如何从子类别id获取父类别?,mysql,Mysql,这是我的类别表 MySQL语句 SELECT maincat.cat_id, maincat.cat_name, maincat.cat_parent, subcat.cat_id, subcat.cat_name, subcat.cat_parent FROM categories maincat INNER JOIN categories subcat ON subcat.cat_id = 2 假设我目前的分类是男装和猫id=2。如何正确检索父类别名称,因为当前语句的结果显示了4个个人项

这是我的
类别

MySQL语句

SELECT
maincat.cat_id,
maincat.cat_name,
maincat.cat_parent,
subcat.cat_id,
subcat.cat_name,
subcat.cat_parent
FROM
categories maincat
INNER JOIN categories subcat ON subcat.cat_id = 2
假设我目前的分类是
男装
猫id=2
。如何正确检索父类别名称,因为当前语句的结果显示了4个个人项目

更新:

$get_cat = $db->get_results("
            SELECT
            maincat.cat_id,
            maincat.cat_name,
            maincat.cat_parent,
            subcat.cat_id,
            subcat.cat_name,
            subcat.cat_parent
            FROM
            categories maincat
            INNER JOIN categories subcat ON subcat.cat_id = 2
            ");
foreach ( $get_cat as $cat )
{
echo '<option value="'.$cat->cat_id.'">'.$cat->cat_name.'</option>';
}
$get\u cat=$db->get\u结果(“
挑选
maincat.cat\u id,
maincat.cat_名称,
maincat.cat_父对象,
子类别类别类别id,
子类别类别名称,
子目录目录父目录
从…起
类别主猫
subcat.cat_id=2上的内部联接类别subcat
");
foreach($get_cat as$cat)
{
回显“.$cat->cat_name.”;
}
电流输出

<option value="1">Personal Items</option>
<option value="1">Personal Items</option>
<option value="1">Personal Items</option>
<option value="1">Personal Items</option>
<option value="1">Personal Items</option>
个人物品
个人物品
个人物品
个人物品
个人物品

我不需要这么复杂就可以完成这么简单的查询:

SELECT name
FROM categories
WHERE cat_id = cat_parent

cat_parent
当然是在代码中定义的。在这种情况下,当您执行
联接时,它可能是
1

,即使是自联接,也需要为联接添加条件。这里应该是subcat.cat\u parent=maincat.cat\u id上的

SELECT cat_id, cat_name, cat_parent FROM categories WHERE cat_id = 2
SELECT
  maincat.cat_id,
  maincat.cat_name,
  maincat.cat_parent,
  subcat.cat_id         AS subcat_id,
  subcat.cat_name       AS subcat_name,
  subcat.cat_parent     AS subcat_parent
FROM
  categories maincat
    INNER JOIN 
  categories subcat 
      ON subcat.cat_parent = maincat.cat_id
WHERE 
  subcat.cat_id = 2

如果希望查询也适用于没有父项的类别(
cat\u parent
列中的
NULL
),则应将
内部联接更改为
左侧外部联接.

这是将返回
男装
而不是
个人物品
这是将返回
男装
而不是
个人物品
Hmmm。。结果是
男士服装
。如果
cat_id=2
我想要的结果是
个人物品如何??结果是子类别(男装)和父类别(个人物品)。哦,我认为您需要重命名(别名)具有相同名称和不同名称的列。看我的编辑。嗯。。如果没有
,其中subcat.cat_id=2
结果将返回
个人项目
四次,因为subcat有4个项目。我想答案是
分组方式
。你不需要分组方式。这将只返回1行(如果没有父级,则返回0)。