select在具有自连接关系的mysql表中

vbopmzt1  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(382)

我对self-join关系不是很熟悉,但是我想知道是否可以通过执行select来直接在这个表中引用的产品下面显示与其他产品相关的产品

样本数据:

期望输出:

我尝试了几个查询,但是我只得到一个字段,其中包含一个列表,例如,行中的相关产品:

select p1.idP, p1.name, group_concat(p2.idP) 
from prodotti p1
left join prodotti p2 on p1.idP = p2.prodotti_idP
group by p1.idP;

我想显示的记录连接到其他只有直接在“父”产品
sql小提琴
谢谢您

pu3pd22g

pu3pd22g1#

您可以不使用任何“self-join”来执行此操作。有条件的 ORDER BY 使用 CASE .. WHEN 表情会有用的。如果 prodotti_idPnull ,它基本上意味着它是一个母产品。所以我们可以简单地按照 idP 价值观;否则我们将使用它的父id( prodotti_idP )分类。第二级排序必须在 idP 价值观。

select idP, name, prodotti_idP
from prodotti 
order by 
  case when prodotti_idP is null then idP
       else prodotti_idp
  end, 
  idP

sql fiddle演示:http://sqlfiddle.com/#!9/72ffbcf/6号

相关问题