2013-11-02 4 views
6

मुझे मेरी वांछित स्कीमा मिल रही है। लेकिन एक चीज जो मुझे करने की ज़रूरत है वह डुप्लिकेट मानों को खत्म करना है। इसलिए मैं अलग-अलग मानों का उपयोग करता हूं, लेकिन वह कार्य क्या करता है यह सभी तत्वों को एक तत्व के भीतर प्रदर्शित करता है।Xquery विशिष्ट-मूल्य

इनपुट स्कीमा:

<?xml version="1.0" encoding="UTF-8"?> 
<hotel> 
<food> 
    <name>Burger</name> 
    <cost>20</cost> 
</food> 
<food> 
    <name>Pizza</name> 
    <cost>20</cost> 
</food> 
<food> 
    <name>Cola</name> 
    <cost>5</cost> 
</food> 
<food> 
    <name>Lemonade</name> 
    <cost>5</cost> 
</food> 
<food> 
    <name>Ice Cream</name> 
    <cost>10</cost> 
</food> 
<food> 
    <name>Cookies</name> 
    <cost>10</cost> 
</food> 
</hotel> 

आउटपुट वर्तमान:

<type> 
<cost>01</cost> 
<food>burger fries cola</food> 
</type> 

वांछित:

<type> 
<cost>01</cost> 
<food>burger</food> 
<food>fries</food> 
<food>cola</food> 
</type> 

असल में है कि कीमत के लिए सभी खाद्य मिलता है।

मेरे XQuery इस प्रकार है:

let $cost:= doc("Untitled7.xml")/hotel/food/cost 
for $unique in distinct-values(doc("Untitled7.xml")/hotel/food/cost) 
let $food:= distinct-values(doc("Untitled7.xml")hotel/food[cost=$unique]/name) 
where $unique = $cost 
return 
<type> 
<year>{$unique}</year> 
<food>{$food}</food> 
</type> 

किसी भी मदद की सराहना की होगी :)

उत्तर

4

अलग-मूल्यों() तार का एक अनुक्रम वापस आ जाएगी: ('बर्गर', 'आलू', ' कोला '), लेकिन अभी आप इसे एक बार में आउटपुट कर रहे हैं। आपको क्या करना है एक और FLWOR कथन में अपने $ खाद्य चर से अधिक है:

return 
<type> 
<year>{$unique}</year> 
{ 
    for $f in $food return <food>{$f}</food> 
} 
</type> 
संबंधित मुद्दे