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_id
和
item_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
嗨,我们有一个看起来像这样的 table(称之为 table A)。如果父数据和子数据,它包含两行。我需要获取如下所示的行,其中包含 item_id 和 parent_item_id(如果存在)(否则为 item_id)。现在我需要加入
item_id (if parent) + parent_item_id as new_id
和
item_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
问题:如何重新表述此查询以便允许我加入?还是有更聪明的方法来完成这项工作?
数据示例
|--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