Yes. You're quite right. I misread the OP's request.

-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx [mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of CRPence
Sent: Friday, December 07, 2012 3:53 PM
To: midrange-l@xxxxxxxxxxxx
Subject: Re: Need some assistance with an SQL query

On 07 Dec 2012 10:50, Dan Kimmel wrote:
You should be able to just reverse the logic on the exists predicate
as your update didn't change any of the values used in the subquery
predicates.:

Exec Sql
Select * from RoutMaxl1 as a
Where not exists
(select 1 from xRouteMax as b
where a.mxplan = b.mxplan and
a.mxdiv = b.mxdiv and
a.mxins = b.mxins and
a.mxben = b.mxben and
a.mxppo = b.mxppo and
a.mxtfrm = 'V' and
a.mxtdt = 0);

<<SNIP>>

The query quoted above seems to select the nearly 22M rows that were not changed by the UPDATE, rather than selecting the several rows in the work-file that did not correlate to a row in the 22M row table.

AFaIK the exception join offered by Alan should have worked, but the following query I expect should also work to select the 11 rows from the work-file that would not have effected an updated row in the 22M production file:

Select b.* from xRouteMax as b
Where not exists
(select 1 from RoutMaxl1 as a
where a.mxplan = b.mxplan and
a.mxdiv = b.mxdiv and
a.mxins = b.mxins and
a.mxben = b.mxben and
a.mxppo = b.mxppo and
a.mxtfrm = 'V' and
a.mxtdt = 0
)

--
Regards, Chuck


rpglist on Friday, December 07, 2012 9:22 AM wrote:

I have two files, one is a work file with 991 records and the other
is a production (Test Environment) file with 22 mil. I am updating
the production records that match to records in the work file.

Here is my sql statement:
Exec Sql
Update RoutMaxl1 as a
Set a.mxUdt = :xDate,
a.mxUtm = :xTime,
a.mxUop = 'CPP989825645KY',
a.mxCpdy = 'Y',
a.mxUty = 'C'
Where exists
(select * from xRouteMax as b
where a.mxplan = b.mxplan and
a.mxdiv = b.mxdiv and
a.mxins = b.mxins and
a.mxben = b.mxben and
a.mxppo = b.mxppo and
a.mxtfrm = 'V' and
a.mxtdt = 0);

The statement runs fine but I only update 980 records, which means
that I have 11 records in table A (xRouteMax) that do not exist in
table B.

Suggestion on how to get a list of those records? I just want the
11.
--
This is the Midrange Systems Technical Discussion (MIDRANGE-L) mailing list To post a message email: MIDRANGE-L@xxxxxxxxxxxx To subscribe, unsubscribe, or change list options,
visit: http://lists.midrange.com/mailman/listinfo/midrange-l
or email: MIDRANGE-L-request@xxxxxxxxxxxx Before posting, please take a moment to review the archives at http://archive.midrange.com/midrange-l.




As an Amazon Associate we earn from qualifying purchases.

This thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.