THAT WORKED!! THANK YOU!! (I'm sorry I missed that one in the earlier post... the type of the error changed, so I thought it was elsewhere. Some of the tickets are more helpful for debugging than others.)
On Wed, Oct 13, 2010 at 9:02 AM, mdipierro <mdipie...@cs.depaul.edu> wrote: > Your view should be": > > def view(): > tcolor=db.color.with_alias('tcolor') > ccolor=db.color.with_alias('ccolor') > accessible_works=db().select(db.work.ALL, tcolor.html_code, > ccolor.html_code, > left=[tcolor.on(tcolor.id==db.work.title_color), > ccolor.on(ccolor.id==db.work.cover_color)]) > return dict(works=accessible_works) > > you should never have db.<alias> > > > This worked for me: > > >>> db.color.insert(html_code='ffffff') > 1 > >>> db.work.insert(title_color=1,cover_color=1) > 1 > >>> rows=db().select(db.work.ALL, t.html_code, c.html_code, > ... left=[t.on(t.id==db.work.title_color), > ... c.on(c.id==db.work.cover_color)]) > >>> print rows > work.id,work.title_color,work.cover_color,t.html_code,c.html_code > 1,1,1,ffffff,ffffff > > >>> print rows[0] > <Row {'c': <Row {'html_code': 'ffffff'}>, 'work': <Row > {'update_record': <function <lambda> at 0x1010d6578>, 'cover_color': > 1, 'id': 1, 'delete_record': <function <lambda> at 0x1010d6500>, > 'title_color': 1}>, 't': <Row {'html_code': 'ffffff'}>}> > >>> print rows[0].c > <Row {'html_code': 'ffffff'}> > >>> print rows[0].c.html_code > ffffff > >>> print rows[0].t.html_code > ffffff > > > On Oct 12, 11:38 pm, Audra Rudys <sphin...@gmail.com> wrote: > > Thank you, removing db from the alias names in the join part of the > > statement worked. I'm now getting a different error, which is more > cryptic > > for me: KeyError: 'ccolor' > > > > I'm assuming the trouble is in the view... the snippet from the view that > > that references the value is: > > {{for work in works:}} > > {{=work.ccolor.html_code}} > > {{pass}} > > > > Note: I changed my aliases from c and t to ccolor and tcolor to be sure > what > > the problem was, since KeyError: c was too vague. So the code in the > > controller now is: > > def view(): > > tcolor=db.color.with_alias('tcolor') > > ccolor=db.color.with_alias('ccolor') > > accessible_works=db().select(db.work.ALL, db.tcolor.html_code, > > db.ccolor.html_code, > > left=[tcolor.on(tcolor.id==db.work.title_color), > > ccolor.on(ccolor.id==db.work.cover_color)]) > > return dict(works=accessible_works) > > > > Am I referencing it properly in my view file? > > > > Should color appear as a keyword in the following line(from the error > > ticket): > > *Function argument list: (self=<Row {'color': <Row {'html_code': > 'F0F8FF'}>, > > 'w... 'A story .'}>}>, key='ccolor')* > > * > > * > > I'm assuming it's a reference to my "color" table, but since I aliased > it, > > I'm not sure why color would be there, I'd expect it to be substituted > with > > ccolor or tcolor. > > > > Audra > > * > > * > > > > On Tue, Oct 12, 2010 at 11:06 PM, mdipierro <mdipie...@cs.depaul.edu> > wrote: > > > This: > > > > > t=db.color.with_alias('t') > > > c=db.color.with_alias('c') > > > accessible_works=db().select(db.work.ALL, db.t.html_code, > > > db.c.html_code, > > > left=[db.t.on(db.t.id==db.work.title_color), > > > db.c.on(db.c.id==db.work.cover_color)]) > > > > > Should be this: > > > > > t=db.color.with_alias('t') > > > c=db.color.with_alias('c') > > > accessible_works=db().select(db.work.ALL, t.html_code, > > > c.html_code, > > > left=[t.on(t.id==db.work.title_color), > > > c.on(c.id==db.work.cover_color)]) > > > > > On Oct 12, 10:48 pm, Audra Rudys <sphin...@gmail.com> wrote: > > > > Please help! I'm trying to join using the same table twice, thus I > need > > > to > > > > do an alias. This is the first time I've ever tried an alias, so I > don't > > > > know if I'm doing this right. > > > > > > If I were writing SQL code, I would write something like the > following: > > > > SELECT db.work.*, db.tcolor.html_code, db.ccolor.html_code > > > > FROM db.work LEFT OUTER JOIN color as tcolor ON db.work.title_color > == > > > > tcolor.id > > > > LEFT OUTER JOIN color as ccolor ON db.work.cover_color == ccolor.id > > > > > > This is what I'm trying, but it's yielding an error: > OperationalError: > > > > ambiguous > > > > column name: color.html_code > > > > > > def view(): > > > > t=db.color.with_alias('t') > > > > c=db.color.with_alias('c') > > > > accessible_works=db().select(db.work.ALL, db.t.html_code, > > > db.c.html_code, > > > > left=[db.t.on(db.t.id==db.work.title_color), > > > > db.c.on(db.c.id==db.work.cover_color)]) > > > > return dict(works=accessible_works) > > > > > > *I'm seeing the following in the variables: *('SELECT work.id, > > > > work.title, work.title_font, wor...lor LEFT JOIN color ON > > > > color.id=work.cover_color;',) > > > > > > *What am I doing wrong? (In case it's useful, I'm running on a PC > > > > *from source code, version 1.87.2, downloaded this morning.) > > > > > > Thanks for your help, > > > > > > Audra > > > > >