XML Oracle交叉连接
我在Oracle中传输XML文件的内容时遇到问题。 我能够从存储在表中的XML文件中提取值。 这个问题与混合级别时正确提取数据有关 下面是我使用的代码:XML Oracle交叉连接,xml,oracle,join,plsql,cross-join,Xml,Oracle,Join,Plsql,Cross Join,我在Oracle中传输XML文件的内容时遇到问题。 我能够从存储在表中的XML文件中提取值。 这个问题与混合级别时正确提取数据有关 下面是我使用的代码: select count(*) from testtable2 t cross join xmltable(xmlnamespaces(default 'http://xxxxxxxxxxxxxxxxxx'), 'records/REC' passing t.xml_file columns CD_UID
select count(*)
from testtable2 t
cross join xmltable(xmlnamespaces(default 'http://xxxxxxxxxxxxxxxxxx'),
'records/REC'
passing t.xml_file
columns
CD_UID varchar2(200) path 'UID',
-- names xmltype path 'static_data/summary',
identifi xmltype path 'dynamic_data/cluster_related'
) RecUid
cross join xmltable(xmlnamespaces(default 'http://xxxxxxxxxxxxxxxxxx'),
'cluster_related/identifiers/identifier[@type="issn"]'
passing RecUid.identifi
columns
CD_ISSN_NO varchar2(200) path '@value'
) Issn ;
预期结果是20471行,但与Issn合并后,我只得到18896行。
我猜这意味着它只考虑了CD_ISSN_NO not null的记录,但在这种情况下,我应该使用哪种代码
谢谢大家! 我不太清楚你想得到什么,但是如果你单独运行这2个选项,会得到什么数字?如果我分别运行这2个选项,第一个20471,第二个18896,我想得到的是一个包含CD_UID和CD_ISSN_NO的表,它不仅包含“非空行”但是,所有的CD_UID也都是CD_ISSN_NOWell的空值,为了使交叉联接查询工作,您应该用逗号替换第二个
交叉联接
关键字,因此它应该看起来像“交叉联接表1,表2”。但对于您的查询,它将为您提供N*M条记录,类似于386820016。我想事实上你需要一些连接条件,比如一行包含列cd_uid和cd_issn_no。所以你需要一些列来标识记录,这个列可以用于外部连接。