我需要能够通过MS Access使用SQL返回类似树状结构。但我不确定如何执行内连接子查询。到目前为止我的代码是
SELECT o.name,o.pdata1,o.pack_ID,p.name,p.pack_ID,p.parent_ID
FROM t_obj AS o
INNER JOIN t_pack AS p on o.Pack_ID = p.Pack_ID
WHERE o.pdata1 IN (
SELECT o2.pdata1
FROM t_obj AS o2
)
ORDER BY p.parent_ID ASC
由于o.pack_ID和o.pdata1之间存在关系,我还需要自己进行连接。
示例数据
o.Name o.Pack_ID p.Pack_ID p.Name p.Parent_ID o.PDATA1
Artifacts 1 1 AC 0 297
Template 1 1 AC 0 281
WA 1 1 AC 0 361
Alisha 361 361 WA 1 611
Damian 361 361 WA 1 480
ABC 297 297 Artifacts 1
DEF 297 297 Artifacts 1
答案 0 :(得分:1)
基于进一步讨论 -
select o.name as parent_name, p.name, p.package_id, p.parent_id
from t_pack p
inner join t_obj o
on CStr(p.parent_id) = o.pdata1
union all
select o2.name as parent_name, o.name, o.package_id, o.package_id
from t_obj o
inner join t_obj o2
on CStr(o.package_id) = o2.pdata1
order by parent_id
如果要仅在下降时显示每个parent_name,请创建一个数据透视表。
正在使用CStr,因为pdata1不是数字数据类型,但需要与数字数据类型的字段连接。 (只是重述,以便其他人知道)