The original statement works fine in Sybase. I did not try it in Sqlite
because my previous experience is that the update statement in Sqlite
does not support the "from" clause. Am I missing something here?

-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of P
Kishor
Sent: Monday, February 19, 2007 1:56 PM
To: sqlite-users@sqlite.org
Subject: Re: [sqlite] Looking for equivalent syntax

On 2/19/07, Anderson, James H (IT) <[EMAIL PROTECTED]>
wrote:
> I'm trying to convert the following statement in Sybase syntax into
the
> equivalent sqlite syntax:
>
> update C1_credDerivEvent
>    set a.CDEvent = a.CDEvent || ',' || b.CDEvent
>   from C1_credDerivEvent     a,
>        C1_tmp_credDerivEvent b,
>        tmp_events            c
>  where a.CDId    = b.CDId
>    and b.CDEvent = c.CDEvent
>
> Here's what I came up with but it turns out not to be equivalent at
all:
>
> insert or replace into C1_credDerivEvent
>   select A.CDId as CDId,
>          A.CDEvent || ',' || B.CDEvent as CDEvent
>   from C1_credDerivEvent     A,
>        C1_tmp_credDerivEvent B,
>        tmp_events            C
>  where A.CDId    = B.CDId
>    and B.CDEvent = C.CDEvent;
>
> The Sybase statement simply updates each record for which the where
> clause is satified, yielding the same number of rows in the table
before
> the update as after.
>
> The Sqlite statement on the other hand, adds rows to the table.
>


well yes, you yourself are asking SQLite to "INSERT or REPLACE"... see
the INSERT part... that adds rows to the table.

In your Sybase version, you are only UPDATEin (equivalent to the
REPLACE part). SQLite is just doing what you are asking it to do.

What is wrong with your original statement? You never mentioned
whether that worked on not... did you try it? (listed again below)

update C1_credDerivEvent
  set a.CDEvent = a.CDEvent || ',' || b.CDEvent
 from C1_credDerivEvent     a,
      C1_tmp_credDerivEvent b,
      tmp_events            c
 where a.CDId    = b.CDId
  and b.CDEvent = c.CDEvent

You could update it to the more standard-ish syntax like so

UPDATE C1_credDerivEvent
SET a.CDEvent = a.CDEvent || ',' || b.CDEvent
FROM C1_credDerivEvent a JOIN C1_tmp_credDerivEvent b ON
  a.CDId  = b.CDId JOIN tmp_events c ON b.CDEvent = c.CDEvent


-- 
Puneet Kishor http://punkish.eidesis.org/
Nelson Inst. for Env. Studies, UW-Madison http://www.nelson.wisc.edu/
Open Source Geospatial Foundation http://www.osgeo.org/education/
---------------------------------------------------------------------
collaborate, communicate, compete
=====================================================================

------------------------------------------------------------------------
-----
To unsubscribe, send email to [EMAIL PROTECTED]
------------------------------------------------------------------------
-----
--------------------------------------------------------

NOTICE: If received in error, please destroy and notify sender. Sender does not 
intend to waive confidentiality or privilege. Use of this email is prohibited 
when received in error.

-----------------------------------------------------------------------------
To unsubscribe, send email to [EMAIL PROTECTED]
-----------------------------------------------------------------------------

Reply via email to