MIDRANGE dot COM Mailing List Archive



Home » MIDRANGE-L » September 2009

Re: Remove duplicate records



fixed

The log number makes the rows unique. Other than that, the rows are repeated three times.

John

-----Original message-----
From: Vern Hamberg vhamberg@xxxxxxxxxxx
Date: Thu, 24 Sep 2009 08:08:42 -0500
To: Midrange Systems Technical Discussion midrange-l@xxxxxxxxxxxx
Subject: Re: Remove duplicate records

John

Is the entire row duplicated, including the log number? Or does the log
number make it unique? Is the log number the only thing that makes it
unique? In other words, is it duplicated in every field, except for the
log number?

In this case, you can get a SELECT that has no duplicates as defined -
say you have fields like FLD1, FLD2, LOGNUM. FLD1 and FLD2 are
duplicated and LOGNUM causes each row to be distinct. You want to
eliminate the duplicates of FLD1 and FLD2.

SELECT FLD1, FLD2, MIN(LOGNUM)
FROM YOURLIB/YOURFILE
GROUP BY FLD1, FLD2

Basically, you make a GROUP BY of the fields you want to be unique and
apply an aggregate function on the remaining fields. In this case, you
could use MIN or MAX.

With this, you can either use the QM solution or one of the solutions
that had you create a different file with the result, then either rename
or copy into the original.

If this fits, it's done in one swell foop. No programming needed. Of
course, your situation may be more complicated.

Is the log number related to any other table? Then you might need to do
a DELETE FROM THATFILE WHERE THATFILE.LOGNUM NOT IN (SELECT LOGNUM FROM
YOURLIB/YOURFILE) after eliminating duplicates.

Enjoy!!

HTH
Vern

jmmckee wrote:
The file as a unique key. The last field is a log number. That allows duplicates, since the program that updates this file allows multiple users to write records at the same time.

I just wrote an RPG IV program. For testing, I just wanted to print the records. I got a 17 page report that "cannot be displayed, copied, or sent". Reason code is 2.

Tomorrow is another day.....

John McKee


-----Original message-----
From: "Evan Harris" spanner@xxxxxxxxxx
Date: Wed, 23 Sep 2009 16:02:11 -0500
To: "'Midrange Systems Technical Discussion'" midrange-l@xxxxxxxxxxxx
Subject: RE: Remove duplicate records


Hi John

As opposed to the uncertainty of a one-shot SQL statement ? Seems to me that
you should fix it using the toolset you are most confident and comfortable
with if re-use is not a factor and not worry whether it's SQL or RPG.

For what it's worth my first thought would be to restore the file and then
re-run the process if it is practical, that way it's a known starting point
and the process to update is a proven one.

It would be better if the file was designed in such a way that you couldn't
create duplicates, so that might be an area worth of further exploration.

Regards
Evan Harris


-----Original Message-----
From: midrange-l-bounces@xxxxxxxxxxxx
[mailto:midrange-l-bounces@xxxxxxxxxxxx] On Behalf Of jmmckee
Sent: Thursday, 24 September 2009 6:13 a.m.
To: Midrange Systems Technical Discussion
Subject: Re: Remove duplicate records

I think I see the logic to do this with a relatively simple RPG program. I
have managed to create a base file that has ACCT, CYC#, DATE, TIME, and
poster id. Seems like I have to do is read a record from this file, chain
to the multiformat logical, check which record format was read, check the
poster id (not in an index) and, if it matches, delete the record. Seems
too simple. Then, when done, repost the original records.

I had wondered if SQL could do that to remove the uncertainty of a one shot
program.

John McKee


midrange-l.

--
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.


--
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.






Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2014 by MIDRANGE dot 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 here. If you have questions about this, please contact