A couple other notes:
- I know I could start with a query that will return everything, like
db.person.id 0, but I'm worried about how that will interact with
queries that are optimized by an index that doesn't include the id
column
- An old trick when building up SQL WHERE statements as strings is to
start with WHERE 1=1 (which should get optimized away by the SQL
engine) and go from there. However, I couldn't find a way to make a
Query that evaluated to the equivalent of 1=1.
Cheers,
Kevin
On Oct 5, 1:39 pm, Kevin Ivarsen kivar...@gmail.com wrote:
Hi everybody,
I'm building a page that will search for rows in a database table
based on optional URL parameters, or return all rows if no parameters
are given. However, I'm having trouble finding a good way to build up
the query without having an existing Query object to start with.
Web2py currently lets me do something like this:
q = (db.person.height 5)
q = q (db.person.height 6)
db(q).select()
But I'd like to be able to do something like this (in pseudocode):
q = EmptyQuery(defaultTable=db.person)
if request.vars.minheight:
q = q (db.person.height request.vars.minheight)
if request.vars.maxheight:
q = q (db.person.height request.vars.maxheight)
people = db(q).select()
so that if no parameters are given, it will select all from db.person,
but you can optionally filter by min and max height.
Is there an easy way to do this in web2py?
Thanks!
Kevin