我对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小提琴
谢谢您
1条答案
按热度按时间pu3pd22g1#
您可以不使用任何“self-join”来执行此操作。有条件的
ORDER BY
使用CASE .. WHEN
表情会有用的。如果prodotti_idP
是null
,它基本上意味着它是一个母产品。所以我们可以简单地按照idP
价值观;否则我们将使用它的父id(prodotti_idP
)分类。第二级排序必须在idP
价值观。sql fiddle演示:http://sqlfiddle.com/#!9/72ffbcf/6号