Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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
XML Oracle交叉连接_Xml_Oracle_Join_Plsql_Cross Join - Fatal编程技术网

XML Oracle交叉连接

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

我在Oracle中传输XML文件的内容时遇到问题。 我能够从存储在表中的XML文件中提取值。 这个问题与混合级别时正确提取数据有关

下面是我使用的代码:

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。所以你需要一些列来标识记录,这个列可以用于外部连接。