我有两个问题 1)树和2)单位
第一次查询
SELECT * FROM tree WHERE entity_id = 8656
返回以下数据:
entity id | parent_id | length
-------------------------------
8656 | 8656 | 0
8656 | 8655 | 1
8656 | 8654 | 2
8656 | 8653 | 3
8656 | 4331 | 4
8656 | 2 | 5
8656 | 1 | 6
第二次查询
SELECT * FROM units WHERE activity_id =10066
返回
id | activity_id | activity_name | region_id | region_name
-----------------------------------------------------------
136 | 10066 | Cricket | 4331 | Yote
137 | 10066 | Cricket | 8653 | Handbreath
140 | 10066 | Cricket | 8656 | Kevb
预期结果
entity id | parent_id | length | region_name
--------------------------------------------
8656 | 8656 | 0 | Kevb
8656 | 8655 | 1 | null
8656 | 8654 | 2 | null
8656 | 8653 | 3 | Handbreath
8656 | 4331 | 4 | Yote
8656 | 2 | 5 | null
8656 | 1 | 6 | null
我试过这个查询
SELECT tree . * , units.region_name
FROM tree
LEFT JOIN units ON tree.parent_id = units.region_id
WHERE tree.entity_id = 8656
AND units.activity_id = 10066
答案 0 :(得分:2)
将u.activity_id =10066
移至LEFT JOIN
而非WHERE
子句,我可以生成结果:
select t.entity_id,
t.parent_id,
t.length,
u.region_name
from tree t
left join units u
on t.parent_id = u.region_id
and u.activity_id =10066
WHERE t.entity_id = 8656
答案 1 :(得分:0)
试试这个:
SELECT t.entity_id, t.arent_id, t.length, A.region_name
FROM tree t
LEFT JOIN (SELECT region_id, region_name FROM units WHERE activity_id =10066 ) AS A ON t.arent_id = A.region_id
WHERE entity_id = 8656
或强>
SELECT t. * , u.region_name
FROM tree t
LEFT JOIN units u ON t.parent_id = u.region_id AND u.activity_id = 10066
WHERE t.entity_id = 8656
答案 2 :(得分:0)
如果你显示你的左连接查询将是有帮助的..无论如何试试这个......
SELECT t.entity_id, t.parent_id, t.length, u.region_name from tree t
left join units u on t.parent_id = u.region_id and u.activity_id =10066
WHERE t.entity_id = 8656