从子级到子级到父级表的SQL查询

时间:2020-11-05 00:45:23

标签: mysql sql

美好的一天,

我正在尝试为我的方案创建一个自定义查询。这是我创建的DEMO

假设我有2个或更多父表,并且该子表将使用此表。

tblParent1

id | name  | age
1  | Lima  | 35
2  | Jenny | 45

tblParent2

id | name  | age
1  | John | 42
2  | Tess | 41

tblParent3

id | name  | age
1  | Jeff  | 39
2  | Gyro  | 47

然后有一个子表在其中使用这3个父表。

tblChild

id | note | tblParent1_key | tblParent2_key | tblParent3_key 
1  | ...  | 1              | 2              | 1           
2  | ...  | 2              | 1              | 1           

还有子表的孩子

tblChildOfChild

| id | feedback | tblChild_key |
| 1  | anything | 1

到目前为止,我一直尝试在left jointblChildOfChild之间使用tblChild,但是我不知道如何访问tblChild的3个父级。我需要创建一个在tblChildOfChild中具有条件的查询。到目前为止,我已经完成了以下操作。

SELECT t.id, t.feedback, t1.note as note, p1.name as parent1, p2.name as parent2, 
p3.name as parent3
FROM tblChildOfChild t 
LEFT JOIN tblChild t1 ON t.tblChild_key = t1.id
LEFT JOIN tblParent1 p1 ON t1.id = p1.id
LEFT JOIN tblParent2 p2 ON p1.id = p2.id
LEFT JOIN tblParent3 p3 ON p2.id = p3.id
WHERE t.id = 1

但是我得到的结果与预期不同。

预期结果应该是:

| id | feedback | note | parent1 | parent2 | parent3 |
| 1  | anythin  | ...  | Lima    | Tess    | Jeff    |

我坚持了几个小时。我希望有人可以帮助我或提供一些新知识。

1 个答案:

答案 0 :(得分:2)

我认为OP唯一做错的是join错误的密钥。

无论如何先尝试一下。

SELECT t.id, t.feedback, t1.note as note, p1.name as parent1, p2.name as parent2, 
p3.name as parent3
FROM tblChildOfChild t 
LEFT JOIN tblChild t1 ON t.tblChild_key = t1.id
LEFT JOIN tblParent1 p1 ON t1.tblParent1_key = p1.id
LEFT JOIN tblParent2 p2 ON t1.tblParent2_key = p2.id
LEFT JOIN tblParent3 p3 ON t1.tblParent3_key = p3.id
WHERE t.id = 1
相关问题