On Tue, 22 May 2007 17:33:27 -0500, Carl Karsten wrote
> Or some such abomination of results of one query as a parameter of a
> 2nd.
>
> given my use case, I can understand why this isn't in the spec, and
> why it may never be. but it seems to come up more often that I
> would expect, so here we go.
>
> My current problem: reconcile transaction details that are off due
> to rounding errors. the 2 sets of details are stored on different
> servers, and no chance of getting one server to hit the 2nd, so the
> python client code is going to have to help by getting a list of
> keys from one and constructing "WHERE OtherKey IN ( 'key1', 'key2',
> 'key3', ...)" which isn't 'hard' but I find annoying that I have
> to convert formats in the application layer.
Option 1: Create a temporary table on one server and load the data from the
other server into it. Then, use a server side subquery or join the tables
together.
If you don't have write permission on either server, there is Option 2: Fetch
all relevant data from server 1 into client memory, fetch all relevant data
from server 2 into client memory, and do the reconciliation in client memory.
There is also Option 3: Use actual parameter passing to build a WHERE ... IN
(...) clause:
cSql = ("select ktbl2_fk from tbl3 where OtherKey IN ("
+",".join("%s" for _ in cList)
+")" )
cur.execute(cSql, cList)
HTH,
--
Carsten Haese
http://informixdb.sourceforge.net
_______________________________________________
DB-SIG maillist - [email protected]
http://mail.python.org/mailman/listinfo/db-sig