Я не знаю синтаксической ошибки в этом коде xquery

#xquery

Вопрос:

 let $d := doc('mondial.xml')
let $airports := $d/mondial/airport
let $countries := $d/mondial/country

for $data1 in $countries
    let $count :=xs:integer("0")
    let $name :=$data1/name
    let $car_code :=$data1/@car_code
    for $data2 in $airports
        where $car_code = $data2/@country 
            $count:= $count  1
    where xs:integer($count)>25 
        return
            <country>
                <name>{data($name)}</name>
                <count>{data($count)}</count>
            </country>
 

Это мой код, когда я запускал этот код, произошла синтаксическая ошибка:
ошибка: синтаксическая ошибка, неожиданный $[ошибка:XPST0003]
$количество:=$количество 1

Комментарии:

1. Ниже я дал ответ, в котором показано, как использовать at синтаксис, но чем больше я смотрю на ваш исходный XQuery, тем менее ясно, что вы пытаетесь подсчитать. Вложенное для неправильно организовано, и вы просто получите больше синтаксических ошибок.

2. Итак, чего вы хотите достичь, подсчитайте аэропорты в каждой стране и верните количество для тех стран, в которых более 25 аэропортов?

3. Да, я хотел получить список стран с более чем 25 аэропортами.

Ответ №1:

Возможно

 let $d := doc('mondial.xml')
let $airports := $d/mondial/airport
let $countries := $d/mondial/country

for $country in $countries
  let $airport-count := count($airports[@country = $country/@car_code])
where $airport-count > 25
return
  <country>
  {
     $country/name,
     <count>{$airport-count}</count>
  }
  </country>
 

Комментарии:

1. Ваш ответ абсолютно правильный, спасибо вам за вашу помощь.

Ответ №2:

На самом деле я нашел ответ

 let $d := doc('mondial.xml')
let $airports := $d/mondial/airport
let $countries := $d/mondial/country
for $data1 in $countries
    let $name :=$data1/name
    let $car_code :=$data1/@car_code
    let $count := count($airports[@country eq $car_code])   
    where $count>25     
        return
            <country>
                <name>{data($name)}</name>
                <count>{data($count)}</count>
            </country>