0

SQL と xpath についてはある程度の知識がありますが、xquery についてはまったく知りません。1 つのフィールドに含まれる XML に、サブ要素の一致するデータも含む同じ要素の 2 つのインスタンスがあるすべてのレコードを取得するクエリを作成するにはどうすればよいでしょうか。

例で説明しましょう:

表:Fred
テーブル フィールド:このテーブルで、次のような id, time, xmlone, xmltwo.
レコードをすべて検索したい:xmlone

<!--xmlstart-->
<!--...any number of elements-->
<elementone position="1">
  <subelea>2010-01-01</subelea>
  <subeleb>hg72</subeleb>
  <subelec>George</subelec>
</elementone>
<!--...any number of elements here (may not end at same level)-->
    <elementone position="2">
      <subelea>2010-01-01</subelea>
      <subeleb>hg72</subeleb>
      <subelec>John</subelec>
    </elementone>
<!--xmlend-->

注 一致する場所subeleasubeleb一致するもののみが必要です。の重複もあるかもしれませんが、とのデータが一致elementoneしない限り気にしません。subeleasubeleb

4

1 に答える 1

1
(: Self-join on all <elementone/> :)
for $i in //elementone, $j in //elementone
where $i != $j
(: Compare `$i` and `$j` on the subelements that should be equal (or whatever) :)
and $i/subelea eq $j/subelea
and $i/subeleb eq $j/subeleb
(: Return result :)
return $i

重複を処理する必要がある場合 (要素レベルでは、まったく同じ内容の 2 つの要素が入力に含まれていてもかまいません)、すべてを括弧で囲んで追加します/.(ステップ操作は重複を処理します)。

(
  for $i in //elementone, $j in //elementone
  where $i != $j
  and $i/subelea eq $j/subelea
  and $i/subeleb eq $j/subeleb
  return $i
)/.
于 2012-12-05T11:16:38.953 に答える