30.12.2013 Aufrufe

Skript - Praktische Informatik / Datenbanken - Universität Kassel

Skript - Praktische Informatik / Datenbanken - Universität Kassel

Skript - Praktische Informatik / Datenbanken - Universität Kassel

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

146<br />

Einführung in XML<br />

pi1,<br />

pa1,<br />

po1<br />

Das hängt mit den Gültigkeitsbereichen der Variablen zusammen. Der<br />

Standard bestimmt, daß eine in einer for- oder let-Klausel gebundene<br />

Variable in allen nachfolgenden Klauseln sichtbar ist. Somit ist oben die<br />

zum Wert 0 gebundene Variable j sichtbar in der folgenden for-Klausel<br />

und in jeder Iteration mit dem Wert 0 in der rechten Seite der zweiten let-<br />

Klausel. Dieses j mit Wert 0 wäre auch noch im return gültig, hätte nicht<br />

die zweite let-Klauses für die zu bindende Variable wieder den Bezeichner<br />

j gewählt. Diese neue Variable j überdeckt das alte j und wird im Beispiel<br />

in allen drei Iterationsschritten an den Wert 1 gebunden und liefert<br />

somit im return dreimal diesen Wert.<br />

Genauso wenig liefert dann<br />

let $sum := 0<br />

for $p in fn:doc("bib.xml")//price<br />

let $sum := $sum + $p<br />

return {$sum}<br />

die Gesamtsumme der Preise im Buchdokument. Vielmehr werden die<br />

vier erzeugten Tupel ausgegeben.<br />

65.95,<br />

65.95,<br />

55.95,<br />

129.95<br />

Das gewünschte Ergebnis läßt sich aber über die sum-Funktion produzieren:<br />

let $p := fn:doc("bib.xml")//price<br />

return {fn:sum($p)}<br />

7.2.2 where-Klausel<br />

Wie bei SQL dient die where-Klausel mit einem Prädikat der Selektion.<br />

Die return-Klausel wird nur für die Tupel evaluiert, die diese Selektion<br />

überlebt haben. In Anlehnung an OQL gibt es die Möglichkeit der Filterung<br />

mit Bezug auf Gruppen, ähnlich der HAVING-Klausel in SQL.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!