2011-11-01 80 views
2

使用Enrollment.xml和Person.xml文檔,我試圖列出擁有所有A的學生的名字。 Person中的ID字段指的是註冊中的StudentID字段。有一個在入學爲每個人在(每名學生沒有一個條目)招收類條目XQuery查詢,使用兩個xml文檔

我似乎無法弄清楚如何編寫查詢

Enrollment.xml形式 - >

<Document> 
    <Table> 
    <StudentID>170815037</StudentID> 
    <Grade>C</Grade> 
    </Table> 
    <Table> 
    <StudentID>193847547</StudentID> 
    <Grade>A</Grade> 
    </Table> 
</Document> 

Person.xml形式 - >

<Document> 
    <Table> 
    <Name>Wee Fletcher</Name> 
    <ID>115423723</ID> 
    </Table> 
</Document> 

繼承人是林試圖工作,我不能讓它的工作

for $a in doc("proj3/Person.xml")/Document/Table/ID 
where every $s in doc("proj3/Enrollment.xml")//Table[StudentID = $a] 
      satisfies ($s/Grade = "A") 
    return $a/Name; 

回答

2

有一個小問題:你設置$adoc("proj3/Person.xml")/Document/Table/ID,並稍後訪問$a/Name(返回不存在的.../Table/ID/Name)。

變化在第一線的分配,在第二比較(添加/ID這裏),你的代碼將被罰款:

for $a in doc("proj3/Person.xml")/Document/Table 
where every $s in doc("proj3/Enrollment.xml")//Table[StudentID = $a/ID] 
      satisfies ($s/Grade = "A") 
    return $a/Name; 
+0

我已經添加了功課標籤,並張貼了我到目前爲止所。任何意見? – user446836

+0

嘗試「任何地方」(認爲這是您聲明中的唯一問題)或我提供的連接模式。可能使用連接模式將導致查詢編譯器中更好的優化,因爲它更通用。 –

+0

不會「哪裏有」列出有一個或多個A的學生?我的查詢是尋找有ALL A的學生。 – user446836