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)。