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
>

Reply via email to