pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Jeff Kowalczyk <jtk@yahoo.com>
To: pgsql-sql@postgresql.org
Subject: Help on update that subselects other records in table, uses joins
Date: Wed, 29 Oct 2003 09:52:52 -0500
Message-ID: <pan.2003.10.29.14.52.52.251007@yahoo.com> (raw)

I need to adapt this an update statement to a general
form that will iterate over multiple orderids for a given
customerinvoiceid. My first concern is a form that will
work for a given orderid, then an expanded version that
will work on all orderids with a specific
customerinvoiceid as a parameter.

I'm sure appropriate joins will handle it, but I'm
not making any headway, everything comes back with
multiple tuple selected for update errors.

Any help would be greatly appreciated. Thanks.

UPDATE ordercharges INNER JOIN orders ON
orders.orderid = ordercharges.orderid
SET orderchargeasbilled = 
(SELECT .065*orderchargeasbilled
FROM ordercharges
WHERE ordercharges.orderid='123456'
AND orderchargecode = 'SALE')
WHERE ordercharges.orderchargecode='S&H'
AND ordercharges.orderid = '123456'
(additional join and where for customerinvoiceid
omitted/not attempted yet)


orders:
+-orderid
| customerinvoiceid 
| (...)
|
| ordercharges:
|   orderchargeid
+---orderid
    orderchargeasbilled
    (...)

To Illustrate, this is a sample table:

[ordercharges]-------------------------------------------------
orderchargeid | orderid | orderchargecode | orderchargeasbilled
---------------------------------------------------------------
1               123456    SALE              10.00
2               123456    S&H               (update)
3               123457    SALE              15.00
4               123457    EXPEDITE           5.00
5               123457    S&H               (update) 
6               123458    SALE              20.00
7               123458    S&H               (update)
8               123459    SALE              10.00
9               123459    S&H               (update)
---------------------------------------------------------------

[orders]-------------------
orderid | customerinvoiceid
---------------------------
123456    54321
123457    54321
123458    54321
123459    55543
---------------------------

(e.g. use 54321 as parameter to update 3 S&H rows in 3 orders,
but not 1 S&H row in order 123459)




view thread (6+ messages)  latest in thread

Message-ID: <pan.2003.10.29.14.52.52.251007@yahoo.com>
Permalink:  ../pan.2003.10.29.14.52.52.251007@yahoo.com/
Also on:    postgresql.org/message-id/pan.2003.10.29.14.52.52.251007@yahoo.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: jtk@yahoo.com
  Subject: Re: Help on update that subselects other records in table, uses joins
  In-Reply-To: <pan.2003.10.29.14.52.52.251007@yahoo.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox