Sql 查询,table /w 双行,加入 IFNULL 函数 - table 加入带有变量列的 tiself

Sql query, table /w double rows, join on IFNULL function - table join on tiself with variable column

嗨,我们有一个看起来像这样的 table(称之为 table A)。如果父数据和子数据,它包含两行。我需要获取如下所示的行,其中包含 item_id 和 parent_item_id(如果存在)(否则为 item_id)。现在我需要加入

item_id (if parent) + parent_item_id as new_iditem_id (if no parent) + item_id as new_id

我已经像这样使用了 IFNULL 函数 IFNULL(parent_item_id, item_id) as new_id 然后我使用 new_id 再次加入相同的 table A 反对 item_id获得一些最终值

长话短说,我的查询是

select item_id, IFNULL(parent_item_id, item_id) AS new_id 
from table A as A1
INNER JOIN table A as A2 ON A1.new_id = A2.item_id 
where A1.type = simple

问题是似乎不允许我使用新创建的列 new_id

再次加入同一个 table

问题:如何重新表述此查询以便允许我加入?还是有更聪明的方法来完成这项工作?

数据示例

|--item_id --|--parent_item_id--|---type---|--price--|
   123          124               simple     0.00
   124          null              config     9.00
   125          null              simple     8.00

我需要将此 table A 加入到变量列中

错误是

Error in query (1054): Unknown column 'new_id' in 'on clause'

select * from A as A2 
JOIN
(
select item_id, type, IFNULL(parent_item_id, item_id)  AS new_id from  A
)A1
ON (A1.new_id = A2.item_id)
where A1.type = 'simple'

将计算直接放入 INNER JOIN 中,如下所示:

select item_id, IFNULL(parent_item_id, item_id) AS new_id 
from table A as A1
INNER JOIN table A as A2 ON IFNULL(A1.parent_item_id, A1.item_id) = A2.item_id 
where A1.type = simple