- From: Houman Khorasani <khorasani@web.de>
- Date: Tue, 22 Jun 2004 14:39:55 -0500
- To: 'Priscilla Walmsley' <priscilla@walmsley.com>, www-ql@w3.org
Hi Priscilla, Thank you very much, for your help. Actually it didn't work but I didn't give up and after keep trying over many days I could solve it at the end. :) Maybe there is still a way to improve the performance of this query. If you see something so please tell me to change and try that. There is just one solution for 'Group By' what does exactly the same what SQL 'Group By' does: ---------------------------------------- let $temp := for $wbtt in doc("wisc_berkeley_tracetime.xml")//row[dat = '20000801000000'] for $wbtl in doc("wisc_berkeley_tracelist.xml")//row[rID = $wbtt/rID] return <g>{($wbtl/rID, $wbtl/ip, $wbtt/min, $wbtt/dat)}</g> for $distinctIp in distinct-values($temp//ip) let $rID := for $i in $temp[ip=$distinctIp] return $i//rID let $dat := for $i in $temp[ip=$distinctIp] return $i//dat let $min := for $i in $temp[ip=$distinctIp] return $i//min order by $distinctIp return <ROW> { $rID[1] } <ip>{ $distinctIp }</ip> { $dat[1] } { $min[1] } </ROW> -------------------------------------- This is equivalent to: SELECT wisc_berkeley_tracetime.rID, ip, dat, min FROM wisc_berkeley_tracelist INNER JOIN wisc_berkeley_tracetime ON wisc_berkeley_tracelist.rID = wisc_berkeley_tracetime.rID WHERE (wisc_berkeley_tracetime.dat = '20000801000000') GROUP by ip ORDER BY ip; This pattern can be used in any case. I have tested 4 Queries some of them with 1 others even with 2 inner-joins, grouping by ip or min. All of them work fine. That was a hard job to figure that out. If you still see something what can be improved regarding the performance, I appreciate to know it. Best Regards Houman M. Khorasani University of Wisconsin Platteville
Received on Tuesday, 22 June 2004 15:40:03 UTC