I tried it with sqlexecute but I would need to do quite a lot of
processing on the results...

Is there any work around you can think of?  Is there any way to use
the DAL with a select statement in the format generated from _select?

Thanks,

J

On Mar 23, 9:35 pm, jonatron <hobson....@googlemail.com> wrote:
> I get the following:
>
> SELECT Calls.id, Calls.CallerName, Calls.CreatedBy, Calls.HandledBy,
> Users.Name, Users.Name FROM Users, Calls LEFT JOIN Users AS created_by
> ON created_by.id=Calls.CreatedBy LEFT JOIN Users AS handled_by ON
> handled_by.id=Calls.HandledBy WHERE Calls.id>0;
>
> On Mar 23, 6:06 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > hmmm. it could be a bug. What do you get if you do:
>
> > print
> > db(db.Calls.id>0)._select(db.Calls.ALL,db.created_by.name,db.handled_by.name,
> >    left=[created_by.on(created_by.id==db.Calls.CreatedBy),
> >            handled_by.on(handled_by.id==db.Calls.HandledBy)])
>
> > On Mar 23, 11:31 am,jonatron<hobson....@googlemail.com> wrote:
>
> > > Thanks,
>
> > > This is close, but it does not quite get the result I'm looking for, I
> > > basically need the following MySQL query:
>
> > > SELECT Calls . * , created_by.Name, handled_by.Name
> > > FROM (
> > > Calls
> > > LEFT JOIN Users AS created_by ON Calls.CreatedBy = created_by.ID
> > > )
> > > LEFT JOIN Users AS handled_by ON Calls.HandledBy = handled_by.ID;
>
> > > I've tried adapting the code you posted but I can't seem to get the
> > > result set I need.  For example a call from 'Helen' created by Bob and
> > > Handled by Sam, I would like to get the results:
>
> > > CallerName      created_by.Name         handled_by.Name
> > > Helen           Bob                             Sam
>
> > > but I get
>
> > > Calls.id        Calls.CallerName        Users.Name      Users.Name
> > > 1               Helen                   Bob                     Bob
> > > 1               Helen                   Sam                     Sam
> > > 1               Helen                   Charlie         Charlie
>
> > > Any ideas?
>
> > > On Mar 20, 3:10 pm, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > created_by=db.Users.with_alias('created_by')
> > > > handled_by=db.Users.with_alias('handled_by')
> > > > rows =
> > > > db(db.Calls.id>0).select(db.Calls.ALL,db.created_by.name,db.handled_by.name,
> > > >    left=[created_by.on(created_by.id==db.Calls.CreatedBy),
> > > >            handled_by.on(handled_by.id==db.Calls.HandledBy)])
>
> > > > On Mar 20, 6:58 am,jonatron<hobson....@googlemail.com> wrote:
>
> > > > > Hi,
>
> > > > > I am hoping someone can help with this:
>
> > > > > I have tables setup something like this (this is a simplified
> > > > > representation):
>
> > > > > db.define_table('Users',
> > > > > Field('Name'))
>
> > > > > db.define_table('Calls',
> > > > > Field('CallerName'),
> > > > > Field('CreatedBy', db.Users),
> > > > > Field('HandledBy', db.Users))
>
> > > > > I need to produce a query set to send to geraldo reports that joins
> > > > > both the createdby and handledby fields to db.users.id so that I can
> > > > > display the users name in the report not the id.  I can do one inner
> > > > > join no problem and use Users.Name to get the name.  To do both joins
> > > > > and get useful data I think I need to do something analogue SQL AS on
> > > > > the joins and then access the data using an alias.  I have played with
> > > > > with_alias but don't seem to get what I need.  Can anyone point me in
> > > > > the right direction?

-- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web...@googlegroups.com.
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en.

Reply via email to