Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MS Access SQL子查询_Sql_Ms Access - Fatal编程技术网

MS Access SQL子查询

MS Access SQL子查询,sql,ms-access,Sql,Ms Access,我需要能够通过MS Access使用SQL返回类似treeview的结构。但是,我不确定如何执行内部联接子查询。到目前为止,我的代码是 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.pd

我需要能够通过MS Access使用SQL返回类似treeview的结构。但是,我不确定如何执行内部联接子查询。到目前为止,我的代码是

 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之间存在关系,因此我还需要对其本身执行连接

样本数据


根据进一步讨论-

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
如果您想只显示每个父项名称一次,请创建一个透视表


之所以使用CStr,是因为pdata1不是数字数据类型,但需要与数字数据类型的字段联接。只是重复,以便其他人知道

o.pdata1在从t_obj中选择o2.pdata1作为o2的目的是什么?该子查询引用了与父查询相同的表t_obj,这意味着它没有做任何事情,因为表t_obj中pdata1的所有值显然都在该表中。您能提供少量样本数据和预期输出吗?@Brian DeMilia-我用一些样本数据更新了帖子。预期的输出是显示树状视图或至少是父子关系,即使它是表格。@PeanutsMonkey。请编辑您的问题以显示所需的结果。请记住,SQL查询将结果集作为表返回,而MS Access不支持递归。@Gordon Linoff-我之所以没有包含所需结果,是因为我不确定MS Access的功能。我是否能够以表格格式显示关系,还是可以让Excel运行查询并返回相应的视图?
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