如何从子类别ID获取父类别?

时间:2012-03-05 07:41:43

标签: mysql

这是我的categories

enter image description here

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

假设我当前的类别是Men Clothescat_id = 2。如何正确检索父类别名称,因为当前语句的结果显示4 Personal Items

更新:

$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>';
}

当前输出

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

3 个答案:

答案 0 :(得分:2)

当您执行JOIN时,即使是自我加入,您也需要为加入添加条件。这里应该是ON subcat.cat_parent = maincat.cat_id

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

如果您希望查询也适用于没有父级(INNER JOIN列中的LEFT OUTER JOIN)的类别,则NULL应更改为cat_parent。< / p>

答案 1 :(得分:0)

进行这样一个简单的查询我不会那么复杂:

SELECT name
FROM categories
WHERE cat_id = cat_parent
当然,代码中定义了

cat_parent。在这种情况下,它可能是1

答案 2 :(得分:0)

SELECT cat_id, cat_name, cat_parent FROM categories WHERE cat_id = 2