SharePointのWebサービスで複数条件をクエリする構文の注意点
Getlistitems呼出時にAND条件が三以上ある場合は構文に注意が必要です。
例えば以下のような四重のAND条件でクエリを送信するとします。
列1(内部名:column01)が「あ」かつ、
列2(内部名:column02)が「い」かつ、
列3(内部名:column03)が「う」かつ、
列4(内部名:column04)が「え」である。
この場合、素直に考えると以下のようにクエリを記述したくなりますが、実際にはこれでは正しい値が返りません。
<query><Query><Where><And><Eq><FieldRef Name=”column01″ /><Value Type=”Text”>あ</Value></Eq><Eq><FieldRef Name=”column02″ /><Value Type=”Text”>か</Value></Eq><Eq><FieldRef Name=”column03″ /><Value Type=”Text”>さ</Value></Eq><Eq><FieldRef Name=”column04″ /><Value Type=”Text”>た</Value></Eq></And></Where></Query></query>
以下が正解。改行を入れいていないので判りにくいですが、AND で三つ以上の条件をまとめる場合、ネスト構造にしてやる必要がある訳ですね。
<query><Query><Where><And><And><Eq><FieldRef Name=”column01″ /><Value Type=”Text”>あ</Value></Eq><Eq><FieldRef Name=”column02″ /><Value Type=”Text”>か</Value></Eq></And><And><Eq><FieldRef Name=”column03″ /><Value Type=”Text”>さ</Value></Eq><Eq><FieldRef Name=”column04″ /><Value Type=”Text”>た</Value></Eq></And></And></Where></Query></query>
簡単に図式化するとこんな感じになります。
<AND>
<AND>
<Eq>あ</Eq>
<Eq>い</Eq>
</AND>
<AND>
<Eq>う</Eq>
<Eq>え</Eq>
</AND>
</AND>
基礎的なことかも知れませんが、気づかないとドツボに嵌りますので要注意です。
login