获取父行,然后是子行

时间:2018-09-07 19:29:56

标签: mysql sql

我发现的另一个父母->孩子的答案似乎并没有真正解决我的情况,所以去吧。

left-right-connections
cid    leftId     rightId
1      1          1
2      1          2
3      1          3
4      2          4
5      3          5
5      3          6

left
id    desc
1     RED
2     GREEN
3     BLUE

right
id   desc
1    car
2    train
3    helicopter
4    truck
5    boat
6    roller skates

我需要的是帮助创建将返回类似内容的查询

cid    leftId     rightId   desc
        1                   RED
  1     1            1      car
  2     1            2      train
  3     1            3      helicopter
        2                   GREEN
  4     2            4      truck
        3                   BLUE
  5     3            5      boat
  6     3            6      roller skates

我可以使连接正常工作,但是当我需要的是将左项作为所有右项子项的父项时,我将获得每一行中所有的leftId和右Id和desc。

我认为我需要的是leftId的区别,然后是获取所有关联的rightId项的子查询。我可以做非常基本的sql,但是这很麻烦。

我希望我在这里所作的解释是有意义的。

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可以首先获取不同的leftId数据,然后与rightId数据合并并按列排序以获得所需的输出。这是显示或UI所需的东西吗?

SQL FIDDLE with sample data

例如:

SELECT DISTINCT NULL AS CID, leftID, NULL AS rightId, b.descr
FROM leftrightT A
INNER JOIN leftT B on A.leftId = B.id
UNION ALL
SELECT CID, leftID, rightId, b.descr
FROM leftrightT A
INNER JOIN rightT B on A.rightId = B.id
order by leftId, CID