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