在相同的 table [SQL] 中查找特定 child 的 parent

Find parent of specific child in the same table [SQL]

我在 phpmyadmin 中 table 看起来像这样:

+-----------+-----------------+-------------------+
|nom_ele_id | nom_ele_title   | nom_ele_parent_id | 
+===========+=================+===================+
| 7060      | STANDARD        |   NULL            |  
| 6953      | SOL             |   7060            | 
| 6957      | type de sol     |   6953            |
+-----------+-----------------+-------------------+

我想要 parent 中的“nom_ele_tile”和我的“nom_ele_parent_id”。
我试试这个:

SELECT a.nom_ele_id, a.nom_ele_title, b.nom_ele_title AS 'nom_parent' 
FROM `immo_nomenclature_element` AS a 
LEFT JOIN `immo_nomenclature_element` AS b 
    on a.`nom_ele_parent_id` = b.`nom_ele_id`

但是对于这个请求,我不能使用 WHERE nom_ele_title="type de sol" 例如。我的整个 table 是这样的:

+-----------+-----------------+-------------------+
|nom_ele_id | nom_ele_title   | nom_parent        | 
+===========+=================+===================+
| 7060      | STANDARD        |   NULL            |  
| 6953      | SOL             |   STANDARD        | 
| 6957      | type de sol     |   SOL             |
+-----------+-----------------+-------------------+

我不确定我是否答对了你的问题。

如果 nom_ele_title="type de sol",您只需要 nom_parent,对吗?

然后您只需在连接条件中添加“and nom_ele_title="type de sol"即可。

 SELECT    a.nom_ele_id,
          a.nom_ele_title,
          b.nom_ele_title             AS 'nom_parent'
FROM      `immo_nomenclature_element` AS a
LEFT JOIN `immo_nomenclature_element` AS b
ON        a.`nom_ele_parent_id` = b.`nom_ele_id and a.nom_ele_title="type de sol"

你只需要添加 where 子句:

SELECT a.nom_ele_id, a.nom_ele_title, b.nom_ele_title AS 'nom_parent' 
FROM `immo_nomenclature_element` AS a 
LEFT JOIN `immo_nomenclature_element` AS b 
    on a.`nom_ele_parent_id` = b.`nom_ele_id`
where a.nom_ele_title='type de sol'