Home » U++ Library support » U++ SQL » SqlArray Limit and Offset
Re: SqlArray Limit and Offset [message #7309 is a reply to message #7297] |
Thu, 21 December 2006 15:17 |
fabio
Messages: 9 Registered: November 2006
|
Promising Member |
|
|
The 2 level query work only for first time....
the solution is (from http://www.oracle.com/technology/oramag/oracle/06-sep/o56ask tom.html)
... 3 level select.....
select * from ( select a.*, ROWNUM as row_num from (
select .......... from .... where ...... order by ......
) a where rownum <= offset+limit) where row_num > offset
Upp working solution is ...
1) Change in file: upp\uppsrc\sql\SqlCtrl\SqlArray.cpp
SqlArray::AppendQuery() method:
sql * ::Select(cols).From(table).Where(wh).OrderBy(orderby).Limit(count).Offset(offset);
in:
sql * ::Select(cols).From(table).Where(wh).OrderBy(orderby).Limit(offset,count);
2) Change in file: upp\uppsrc\sql\Sql\SqlStatement.cpp
SqlSelect& SqlSelect::Limit(int64 offset, int limit) {
text = SqlCase(ORACLE,"select * from ( select rownum_a.*, ROWNUM as row_num from ( ")() + text +
SqlCase(ORACLE,Format(") rownum_a where rownum <= %d ) where row_num > %d", offset+limit,offset))
(Format(" limit %d, %d",offset,limit));
return *this;
}
this query use rownum reserved word, row_num, rownum_a user word and generate an extra column row_num in the result.
3) optional ?
Remove SqlSelect::Limit(count)
Remove SqlSelect::Offset(offset)
for complete portability
Tested in oracle and sqlite, my be work in MySql (same syntax of sqlite).
Fabio
-
Attachment: limit.zip
(Size: 3.91KB, Downloaded 334 times)
|
|
|
|
|
SqlArray Limit and Offset
By: zsolt on Fri, 11 August 2006 01:03
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Fri, 11 August 2006 08:35
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Fri, 11 August 2006 09:05
|
|
|
Re: SqlArray Limit and Offset
By: zsolt on Fri, 11 August 2006 09:41
|
|
|
Re: SqlArray Limit and Offset
By: zsolt on Fri, 11 August 2006 09:50
|
|
|
Re: SqlArray Limit and Offset
By: rbmatt on Fri, 11 August 2006 18:36
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Fri, 11 August 2006 18:44
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Fri, 11 August 2006 23:47
|
|
|
Re: SqlArray Limit and Offset
By: zsolt on Tue, 22 August 2006 14:10
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Tue, 22 August 2006 15:21
|
|
|
Re: SqlArray Limit and Offset
By: fabio on Wed, 20 December 2006 16:49
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Wed, 20 December 2006 21:00
|
|
|
Re: SqlArray Limit and Offset
By: fabio on Thu, 21 December 2006 15:17
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Thu, 21 December 2006 21:49
|
|
|
Re: SqlArray Limit and Offset
By: fabio on Sat, 23 December 2006 10:01
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Sat, 23 December 2006 12:55
|
|
|
Re: SqlArray Limit and Offset
By: fabio on Wed, 27 December 2006 17:09
|
|
|
Re: SqlArray Limit and Offset
By: mirek on Sun, 31 December 2006 09:27
|
Goto Forum:
Current Time: Wed May 29 03:48:58 CEST 2024
Total time taken to generate the page: 0.02273 seconds
|