2016-04-13 10 views
1

おはよう、Xqueryネストされたクエリを使用しているときにWhere句が機能しない

私はxqueryを使い慣れています。

私はxqueryをwhere句で実行しようとしています。where句は、以下のようにネストしたクエリから返された値よりも大きな値を返します。それは実行されますが、返された値より大きい値を返しません。

where節を値と共に直接使用すると、正常に動作します。私は私のクエリを実行するためにBaseXを使用しています。私のサブクエリを誤って読んでいる可能性があります。

for $y in doc("url.xml")/taxi_stations/stand 

where $y/taxis>= 
(

for $x in doc("url.xml")/taxi_stations/stand 
where $x/name="Jacksonville" 
return data($x/taxis) 
) 
return ($y/taxis,$y/name) 
+0

内部クエリが複数の結果を返しますか?例文は多くの助けになります。 –

+0

内側のwhere節のために、内側のクエリはただ1つの値を返します。以下の回答を参照してください。フィードバックありがとう –

答えて

1

$taxisの値は何ですか?あなたの比較が数字ではなく文字列で起こっている可能性があります。あなたのネストされたリターンで

は、あなたが$x/taxisdata()を呼び出す - 正しく外側where句の$y/taxisは、おそらくもdata()に包まれるべきで、その後、数値を返すことを想定します。

ただし、ドキュメントにスキーマがない場合、data()は単に文字列を返します。その場合は要素をfn:number()を使用して数値に変換するか、$y/taxis/xs:integer(.)のように直接キャスティングする必要があります。

+0

@リヤササウタウ私の答えをより詳しく読んでください。スキーマを使用していますか?そうでなければ、 'data()'はあなたが想定していることをしません。 'タクシー 'とはどんなデータ型がありますか?もし整数であれば、 '$ x/taxis instance of xs:integer 'が真であるかどうかを調べることで簡単にテストすることができ、そうでなければあなたのデータはあなたの想定した方法では比較できません。 – wst

+1

こんにちは、タクシーの要素は#PCDATAです。私はこれをテキストとして保存していますか?number()functonを使用しました。 –

関連する問題