美好的一天,
我正在尝试为我的方案创建一个自定义查询。这是我创建的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 join
和tblChildOfChild
之间使用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 |
我坚持了几个小时。我希望有人可以帮助我或提供一些新知识。
答案 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