0

2 日間でカリフォルニアに行った旅行の数を数えようとしています。

次のような現在の XQuery があります。

for $x in doc("triptracker.xml")/data/cities/city,
  $y in doc("triptracker.xml")/data/trips/trip
let $date as xs:date := xs:date($y/date)
where $x/cityName = $y/cityName and $x/state = "CA"  and 
$date gt xs:date("2003-01-01") and $date lt xs:date("2006-12-31")
return <Result>Trips to California: {count($y)}</Result>

結果セットが得られます

<Result>Trips to California: 1</Result>
<Result>Trips to California: 1</Result>
<Result>Trips to California: 1</Result>
<Result>Trips to California: 1</Result>
<Result>Trips to California: 1</Result>

5つ数える代わりに

trip と city に与えられる XML データのタイプは次のとおりです。

<trips>
    <trip>
        <ssn>123-20-4567</ssn>
        <cityName>Tucson</cityName>
        <date>2001-08-11</date>
    </trip>
</trips>
<cities>
    <city>
        <cityName>Houston</cityName>
        <state>TX</state>
        <location>
            <latitude>29.76045</latitude>
            <longitude>-95.369784</longitude>
        </location>
    </city>
</cities>

どんな助けでも大歓迎です

4

1 に答える 1

0

forsを使うと、1カウントしか取れないことに気づいたので、letを使って修正しました。

let $x := doc("triptracker.xml")/data/cities/city[state = "CA"],

$y := doc("triptracker.xml")/data/trips/trip[cityName=$x/cityName 
and xs:date(date) gt xs:date("2003-01-01")  
and xs:date(date) lt xs:date("2006-12-31")]

return <Result>Trips to California: {count($y)}</Result>
于 2012-12-05T07:32:07.053 に答える