-- 作者:蒙面的羔羊
-- 发布时间:5/22/2007 11:42:00 AM
--
另一个关于重构的问题: 原查询: Q10:根据其兴趣分组列出所有的人员,标签使用法语. FOR $i IN DISTINCT /site/people/person/profile/interest/@category LET $p := FOR $t IN /site/people/person WHERE $t/profile/interest/@category = $i RETURN <personne> <statistiques> <sexe> $t/gender/text() </sexe>, <age> $t/age/text() </age>, <education> $t/education/text()</education>, <revenu> $t/income/text() </revenu> </statistiques>, <coordonnees> <nom> $t/name/text() </nom>, <rue> $t/street/text() </rue>, <ville> $t/city/text() </ville>, <pays> $t/country/text() </pays>, <reseau> <courrier> $t/email/text() </courrier>, <pagePerso> $t/homepage/text()</pagePerso> </reseau>, </coordonnees> <cartePaiement> $t/creditcard/text()</cartePaiement> </personne> RETURN <categorie> <id> $i </id>, $p </categorie> 注意,这里把序列$p放在最后返回的结果<categorie>中了,如果改写成 ' for $i in distinct-values(/site/people/person/profile/interest/@category), $t in /site/people/person return <categorie><id>{$i}</id> <personne> <statistiques> <sexe>{$t/gender/text()}</sexe>, <age>{$t/age/text()}</age>, <education>{$t/education/text()}</education>, <revenu>{$t/income/text()}</revenu> </statistiques>, <coordonnees> <nom>{$t/name/text()}</nom>, <rue>{$t/street/text()}</rue>, <ville>{$t/city/text()}</ville>, <pays>{$t/country/text()}</pays>, <reseau> <courrier>{$t/email/text()}</courrier>, <pageperso>{$t/homepage/text()}</pageperso> </reseau>, </coordonnees> <cartepaiement>{$t/creditcard/text()}</cartepaiement> </personne> </categorie> ' 则查询得到的结果类似下面的情况: categorie> <id>category38</id> <personne> <statistiques> <sexe />, <age />, <education />, <revenu /></statistiques>, <coordonnees><nom>Torkel Prodrodmidis</nom>, <rue />, <ville />, <pays />, <reseau><courrier />, <pageperso /></reseau>, </coordonnees><cartepaiement>5144 2585 6148 3007</cartepaiement></personne> </categorie> <categorie> <id>category38</id> <personne> <statistiques> <sexe />, <age />, <education />, <revenu /></statistiques>, <coordonnees><nom>Gul Prodrodmidis</nom>, <rue />, <ville />, <pays />, <reseau><courrier />, <pageperso /></reseau>, </coordonnees><cartepaiement /></personne> </categorie> <categorie> <id>category38</id> <personne> <statistiques> <sexe />, <age />, <education />, <revenu /></statistiques>, <coordonnees><nom>Theron Aseltine</nom>, <rue />, <ville />, <pays />, <reseau><courrier />, <pageperso /></reseau>, </coordonnees><cartepaiement>6099 6159 7416 8032</cartepaiement></personne> </categorie> <categorie> <id>category38</id> <personne> <statistiques> <sexe />, <age />, <education />, <revenu /></statistiques>, <coordonnees><nom>Guillermo Litecky</nom>, <rue />, <ville />, <pays />, <reseau><courrier />, <pageperso>http://www.stanford.edu/~Litecky</pageperso></reseau>, </coordonnees><cartepaiement>1437 9349 4810 4089</cartepaiement></personne> </categorie> 这也和原查询的意图不同
|