从MYSQL结果中的表中检索父类别名称

时间:2011-11-16 12:41:24

标签: mysql database

我有一个名为'categories'的MYSQL表来自我从其他人继承的项目。

id         parent_id       name
1          NULL            Travel
2          NULL            Sleep
3          NULL            Eat
4          NULL            Bath
5          1               Prams
6          1               Travel Systems
7          2               Cots
8          3               High Chairs

这个表显然比那个大很多,但你得到了一般的想法。我有一个MYSQL语句,它将此表与其他类别,品牌和产品表结合在一起,但基本上我想从上表中列出父类别名称,并在语句中使用子类别。我该怎么做?

我目前的陈述是这样的:

    SELECT brands.name, products.name,  categories.id, categories.name, brands.id, 
FROM `products` , `brands` , `categories`
WHERE products.brand_id = brands.id
AND products.category_id = categories.id
AND brands.name = '$brand'
ORDER BY categories.name, products.name

如何检索结果中的父类别名称? 例如,如果产品是Pram,我该如何输出“Travel”。我可以在循环中单独使用MYSQL语句,但我想避免这种情况。这要么是一个愚蠢的简单问题(在这种情况下我为脑死亡道歉)或者更复杂一点!感谢。

1 个答案:

答案 0 :(得分:1)

首先,您需要知道当前类别的父ID,然后获取该ID的名称,您可以这样使用子查询:

SELECT name FROM categories WHERE id = (SELECT pid FROM categories WHERE name = $brand)

编辑:由于您需要在给定子类别ID的同一行中获取类别和子类别名称,请尝试以下操作:

SELECT sc.name AS subcategory, c.name AS category
FROM categories sc
LEFT JOIN categories c ON c.id = sc.parent
WHERE sc.id = $subcategory_id