我不知道如何提出这个问题。 情况就是这样:
表category
:
id_category
id_main_category
title_category
内容是:
id_category :1
| id_main_category :0
| title_category : Man
id_category :2
| id_main_category :0
| title_category : Woman
id_category :3
| id_main_category :1
| title_category : Wallet
id_category :4
| id_main_category :1
| title_category : Shoe
id_category :5
| id_main_category :2
| title_category : Dress
id_main_category = id_category
id_main_category = 0的每个字段都是MainCategory,另一个是id_main_category中引用了id_category的其他字段的子类别。
所以,Man(id_category 1)是一个MainCategory,它有2个subCategory:
我想从类别中选择*,但也要选择maincategory的标题,并将其打印为:
- 曼
- 女人
- 钱包(男)
- 鞋(男)
- 连衣裙(女)
问题是:如何选择和创建mainCategory的title_category的别名,如:
SELECT *, title_category as title_main_category FROM category WHERE id_main_category = id_category.
谢谢
答案 0 :(得分:1)
您需要JOIN
,因为您实际上将不同的行合并为一个。这应该可以解决问题
SELECT * FROM `category` AS `a`
LEFT JOIN `category` AS `b`
ON `a`.`id_main_category` = `b`.`id_category`
注意:如果id_main_category
是' root,则应将NULL
设置为0
。类别。 /t:Rebuild
/p:DeployOnBuild=true
/p:PublishProfile=Jenkins_Publish
/p:Configuration=Release
是一个有效的ID,因此您不应该根据此任意值区分root / child。您可能必须更改列以允许空值。
答案 1 :(得分:1)
这将为您提供您想要的确切结果。
SELECT CONCAT(a.title_category,'(',IFNULL(b.title_category,''),')')
FROM category a LEFT JOIN category b ON a.id_main_category = b.id_category ;
希望这有帮助。我使用了自联接,b类似于父类别表。
答案 2 :(得分:0)
正如@giorgio所说。
SELECT *, a.`title_category` AS 'title_main_category' FROM
`category` AS `a`
LEFT JOIN `category` AS `b`
ON `b`.`id_main_category` = `a`.`id_category`
谢谢