Select in a mysql table with self-join relationship

Select in a mysql table with self-join relationship

我不太熟悉自连接关系,但我想知道是否可以执行 SELECT,以显示与引用产品直接相关的其他产品的产品,在这个tablemysql

示例数据:

期望的输出:

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

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;

我想只在 "parent" 产品

的正下方显示与其他人关联的记录

SQL Fiddle

谢谢

您可以在不使用任何 "Self Join" 的情况下执行此操作。使用 CASE .. WHEN 表达式的条件 ORDER BY 会起作用。如果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