Michael,
in addition to the queries I already gave you with count and groupby, here is
another one in
pure XQuery 1.0 that cannot be reduced
declare function foo($x)
{
if ($x/@a) then $x else <b/>
};
for $x in Blah1
for $y in Blah2
let $z := foo($y)
where $z is $z
return $x
(variable $z cannot be unfolded because of the generation of new nodes, and
then the where cannot be move up because
of the let)
Sorry, I felt like being twisted minded this morning :-)
XQuery is wicked :-)
Best
Dana
On Mar 27, 2013, at 7:10 PM, Michael Sokolov wrote:
> (forwarding Daniela's message)
>
> Michael,
>
> I think the ones with grouby and a where after the groupby are impossible to
> rewrite
> in general (remember this from my optimizing SQL days). In this case the
> WHERE is the good old
> HAVING clause of SQL.
>
> Something along the lines of
>
> for $x in blah
> for $y in blah
> group by $z:= $x/a, $t:= $y/b
> where $z+$t >25
> return $z
>
> I am putting an informal syntax, obviously.
>
> Another case is when the COUNT clause exists. You cannot move the where up
> and down in the tuple stream in
> such a case.
>
> for $x in Blah1
> for $y in Blah2
> count $i
> where $x/a eq $y/b
> return something using $i
>
>
> HTH
> Dana
>
>
> On Mar 27, 2013, at 5:31 AM, Michael Sokolov wrote:
>
>> I'm trying to come up with examples in which "where" clauses cannot be
>> rewritten as XPath predicates. So far, the ones I have all involve an "at"
>> counter. Are there others?
>>
>> --
>> Michael Sokolov
>> Senior Architect
>> Safari Books Online
>>
>> _______________________________________________
>> [email protected]
>> http://x-query.com/mailman/listinfo/talk
>
>
>
> _______________________________________________
> [email protected]
> http://x-query.com/mailman/listinfo/talk
_______________________________________________
[email protected]
http://x-query.com/mailman/listinfo/talk