我有一个名为'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语句,但我想避免这种情况。这要么是一个愚蠢的简单问题(在这种情况下我为脑死亡道歉)或者更复杂一点!感谢。
答案 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