MS Access SQL子查询

时间:2014-07-20 13:36:06

标签: sql ms-access

我需要能够通过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

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不是数字数据类型,但需要与数字数据类型的字段连接。 (只是重述,以便其他人知道)