SQL select 的自连接结果

SQL self join result of a select

我有两个表,我们称它们为 AB,我对其执行 inner join

select
A.id, 
A.serial_number as serial, 
concat(B.type, '-', B.primary, '-', B.secondary) as product_number, A.parent_id as parent
from A
inner join B on A.number_id = B.id) as T1

因此我得到了一个包含 parents 和 children 的集合(每个 parent1 个)。

+----+--------+-----------------+--------+
| id | serial | product number  | parent |
+----+--------+-----------------+--------+
| 1  |    123 | abc             | null   |
| 2  |    234 | cde             | 1      |
| 3  |    456 | abc             | null   |
| 4  |    895 | cde             | 2      |
+----+--------+-----------------+--------+

现在我想进行自我连接以获得以下内容

+----+---------------+------------------------+---------------+-----------------------+
| id | serial parent | product_number parent  | serial child  | product_number child  |
+----+---------------+------------------------+---------------+-----------------------+
| 1  |           123 | abc                    |           234 | cde                   |
| 2  |           456 | abc                    |           895 | cde                   |
+----+---------------+------------------------+---------------+-----------------------+

最好的方法是什么,我就是找不到一个简单的解决方案...有没有办法将 T1 与自身连接起来?

我认为这是更多的连接:

select
    ap.id as id_parent, 
    ap.serial_number as serial_parent, 
    concat_ws('-', bp.type, bp.primary, bp.secondary) as product_number_parent, 
    ac.child as id_child,
    ac.serial_number as serial_child,
    concat_ws('-', bc.type, bc.primary, bc.secondary) as product_number_child
from a ap 
inner join a ac on ac.parent = ap.id
inner join b bp on bp.id = ap.astrol_number_id
inner join b bc on bc.id = ac.astrol_number_id
where ap.parent is null