这是我的categories
表
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 Clothes
和cat_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>
答案 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