Sql查询,表/ w双行,连接IFNULL函数 - 表连接tiself与变量列

时间:2017-01-08 22:21:15

标签: mysql sql join ifnull

您好我们有一个看起来像这样的表(称之为表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再次针对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'

2 个答案:

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