Thanks Massimo, that's a great help. I'm starting to get the hang of
it.

I had trouble with the following:

>>> r9=db(q2)(db.Section.id==7767|db.Section.id==7540).select()

but realized that I needed to enclose the filters in parentheses:

>>> r9=db(q2)( (db.Section.id==7767) | (db.Section.id==7540) ).select()

The web2py book certainly helped with basic concepts but now that I've
ventured into real-world coding on our classroom management
application, I'm finding it difficult to extrapolate the basics to the
more complex tasks. Hence, I really appreciate your help. I'm hoping
the new version of the book will contain more advanced examples so I
can work through problems more independently. :)

BTW, it was at this exact point that I gave up on django last summer.
I couldn't find a way to generate very complex joins using their DAL.
Eventually, I turned to web2py. It was the right decision for our
school..

-Michael



On Aug 14, 12:46 pm, mdipierro <[email protected]> wrote:
> if q1, q2, q3, ... are elementary queries like
>
> db.table.field==value
> db.table.field<value
> db.table.field==db.table.otherfield+1
> etc.
>
> a SQLSet is
>
> db(q1)
> db(q1&q2)    same as db(q1)(q2)
> db(q1|q2)
>
> "&" and "|" are the logical operators. You should not use "and" and
> "or".
>
> On a SQLSet you can call .select(...)
>
> db(q1|q2)(q3|q4).select(....)
>
> On Aug 14, 10:46 am, Michael <[email protected]> wrote:
>
> > In my last post I said r2=f1(db.Section.schoolYear==2009).select()  -
> > works fine.
>
> > But I'm still struggling with SQLSets. I've read through the web2py
> > book and looked at examples online. Unfortunately I can't find
> > examples that clarify complex SQLSet syntax. I don't know how best to
> > present all the scenarios I've tried so I'll just list a few below.
>
> > Example 1: Trying to filter a SQLSet (f1) using multiple conditions:
>
> >    r2=f1(db.Section.schoolYear==2009 and db.Section.id==7540).select()
> > - results in:
>
> > "ProgrammingError: The cursor's connection has been closed."
>
> > Example 2: Tried to create a subset of the original set:
>
> > >>>subset2=db(f1)(db.Section.id==7540)
> > >>> r6=subset2.select()
>
> > Traceback (most recent call last):
> >   File "C:\web2py\applications\ajaxShell/controllers/default.py", line
> > 88, in talk
> >     exec(request.vars.s) in {},d
> >   File "<string>", line 1, in <module>
> >   File "C:\web2py\gluon\sql.py", line 2210, in select
> >     query = self._select(*fields, **attributes)
> >   File "C:\web2py\gluon\sql.py", line 2117, in _select
> >     fields = [self._db[table].ALL for table in self._tables]
> >   File "C:\web2py\gluon\sql.py", line 524, in __getitem__
> >     return dict.__getitem__(self, str(key))
> > KeyError: 'gluon'
>
> > Example 3: Tried to select specific fields from the original SQLSet:
>
> > >>>r3=f1(db.Section.id==7540).select(db.Employee.name,db.Section.name,db.Cell.row,db.Cell.col,db.Cell.block,db.Period.periodStart,db.Period.periodEnd)
>
> > "ProgrammingError: The cursor's connection has been closed."
>
> > Example 4: Tried to create a subset from a new. more complex set:
>
> > >>>set=db((db.Employee.id==db.EmployeeSection.employeeID) & \
>
> >    (db.Section.id==db.EmployeeSection.sectionID) & \
> >    (db.Employee.id==9000) & \
> >    (db.Cell.id==db.SectionCell.cellID) & \
> >    (db.Section.id==db.SectionCell.sectionID) & \
> >    (db.Period.id==db.SectionCell.periodID))
>
> > >>> subset=set(db.Section.id==7540)
> > >>> subset.select() results in:
>
> > "ProgrammingError: The cursor's connection has been closed."
>
> > Thanks in advance for your help.
>
> > -Michael
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to