Thanks for confirming the DAL limitation here & suggestion.  I ended up
doing that, and it worked.

On Fri, Nov 19, 2010 at 11:33 AM, mdipierro <mdipie...@cs.depaul.edu> wrote:

> Actually you cannot this with the DAL. Since this is a one-time step,
> I would do
>
> db.executesql("UPDATE dest SET dest.field = (SELECT src.field FROM
> src, dest WHERE src.dest_id = dest.id);")
>
>
> On Nov 19, 11:21 am, Audra Rudys <sphin...@gmail.com> wrote:
> > Oops, for logical clarity, it should be:
> > UPDATE dest
> > SET dest.field =
> > (SELECT src.field FROM src, dest WHERE src.dest_id = dest.id);
> >
> > On Fri, Nov 19, 2010 at 11:20 AM, Audra Rudys <sphin...@gmail.com>
> wrote:
> > > I figured out a way to do this... rewrote my query as a nested select:
> > > UPDATE dest SET dest.field = (SELECT src.field FROM src, dest WHERE
> > > src.dest_id = dest.id);
> >
> > > Does SQLite support UPDATE statements with multiple tables or does one
> have
> > > to nest select statements to achieve this?
> >
> > > Thanks,
> > > Audra
> >
> > > On Fri, Nov 19, 2010 at 10:56 AM, Audra Rudys <sphin...@gmail.com>
> wrote:
> >
> > >> This ought to be simple and yet...
> > >> How do I write the following query in web2py?
> > >> UPDATE dest, src
> > >> SET dest.field = src.field
> > >> WHERE src.dest_id = dest.id
> >
> > >> I only need to run it once.  Tried via database administration module,
> but
> > >> the problem seems to be that the source and destination field names
> are the
> > >> same.
> >
> > >> Via code, if I write:
> > >> db(db.dest.src_id == db.src.id).update(field = db.src.field)
> > >> I get an error that SET doesn't know what to do.
> >
> > >> The syntax checker won't allow me to write (keyword can't be an
> > >> expression):
> > >> db(db.dest.src_id == db.src.id).update(dest.field = db.src.field) or
> > >> db(db.dest.src_id == db.src.id).update(db.dest.field = db.src.field)
> >
> > >> I tried to execute the query using executesql and got an error as
> well:
> >
> > >> Traceback (most recent call last):
> >
> > >>   File "E:\web2py\gluon\restricted.py", line 188, in restricted
> >
> > >>     exec ccode in environment
> >
> > >>   File "E:/web2py/applications/octopus/models/db_octopus.py" <
> http://127.0.0.1:8000/admin/default/edit/octopus/models/db_octopus.py>,
> line 44, in <module>
> >
> > >>     db.executesql('UPDATE db.page_content,db.work SET
> db.page_content.created_by = db.work.created_by WHERE
> db.page_content.work_id == db.work.id;')
> >
> > >>   File "E:\web2py\gluon\sql.py", line 1451, in executesql
> >
> > >>     self._execute(query)
> >
> > >>   File "E:\web2py\gluon\sql.py", line 963, in <lambda>
> >
> > >>     self._execute = lambda *a, **b: self._cursor.execute(*a, **b)
> >
> > >> OperationalError: near ",": syntax error
> >
> > >> ...
> >
> > >> In case it's useful, variable a = ('UPDATE db.page_content,db.work SET
> page_content....d_by WHERE db.page_content.work_id == db.work.id;',)
> >
> > >> I've tried a few variations of the syntax, but still getting these
> errors.  Please help!
> >
> > >> Audra
> >
> >
>

Reply via email to