您好我们有一个看起来像这样的表(称之为表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
再次针对item_id加入同一个表A以获取最终值
总而言之,我的疑问是
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
我需要在变量列
上将此表A连接起来错误是
查询错误(1054):'on clause'
中的未知列'new_id'
答案 0 :(得分:1)
将计算直接放入 INNER JOIN ,如下所示:
$( '.modal-body canvas' ).each( function( i ) {
var dataUrl = this.toDataURL( 'image/jpeg' )
var canvasNumber = i + 1;
$( '#download' ).attr( {
href: this.toDataURL( 'image/jpeg' ),
download: filename + '-' + canvasNumber + ".jpg"
} )[0].click();
});
答案 1 :(得分:0)
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'