如何为与其他字段名称相同的字段创建别名?

时间:2017-09-14 06:18:37

标签: php mysql mysqli

我不知道如何提出这个问题。 情况就是这样:

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:

  • 电子钱包(id_category 3)
  • 鞋子(id_category 4)

我想从类别中选择*,但也要选择maincategory的标题,并将其打印为:

  
      
  •   
  • 女人
  •   
  • 钱包(男)
  •   
  • 鞋(男)
  •   
  • 连衣裙(女)
  •   

问题是:如何选择和创建mainCategory的title_category的别名,如: SELECT *, title_category as title_main_category FROM category WHERE id_main_category = id_category.

谢谢

3 个答案:

答案 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`

谢谢