REPLACE

From: lawyerkill(at)aol(dot)com (LawyerKill)
To: pgsql-sql(at)postgresql(dot)org
Subject: REPLACE
Date: 2004-01-31 21:50:06
Message-ID: 20040131165006.19898.00001138@mb-m17.aol.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

LK

I'm using Foxpro 8 and I'm trying to merge selective data from 4 different
tables into a new table.The problem is that the tables are not alike, Table one
may have 4 records with the name John in them, table 2 had only one John with
one account # in that record, so I want to have a new table with the 4
Johns(Same Johns) and the account number each time after his name. So here is
what I did. I selected data from each table and stored them in an array, 3 of
the four table have a common field which is, 'Name'

Create table data
Name char (12),;
Address char (20),;
Phone Char (10),;
Account Char (20),;
Order N(15),;
Date Date,;
(etc.)

Select Name, Address, Phone (etc.) From Table 1;
where Table1.date= todays date;
INTO ARRAY ABC
(Then I count the number of records)
Num1=Alen(ABC,1)

Select Name, AccountN, Order, time (etc) from Table2;
Where Table2.date= todays date;
INTO ARRAY DFE
(Then I count the number of records)
Num2=Alen(DFE,1)

Now since Table 1 has the most data I move that data into the new table.

Use Data
Append blank
For XXX=1 to Num1(Record count from array)
Replace Name with ABE(xxx,1)
Replace Address with ABE(xxx,2)
Replace Phone with ABE(xxx,3)
(Etc)
Skip
Endfor|Next

So far so good, now here is where the problem happens. Let's say Johnname
appears 4 times in table 1, and had one account Num in table 2, lets say it's
ASD234 and I have 36 records all together from Table 1. Now I try and replace
the account number, there are only 9 different records in table 2, 9 account
numers to match to the 36 records from Table 1.

For SA = 1 to Num2(Second array count total of 9 records)
Replace Account with DEF[SA,1] Where ABC[1,1]=DEF[SA,1]
ENDFOR|Next

Now what happens is that it replaces all 36 records with the same account
number, ASD234, it seems to ignore the, ABC[1,1]=DEF SA[SA,1]. What I was
looking for was this

John ASD234
John ASD234
John ASD234
John ASD234
Joe (no number)
Joe (no number)
Mike (no number)
Etc.

What I get is this,
John ASD234
John ASD234
John ASD234
John ASD234
Joe ASD234
Joe ASD234
Mike ASD234
Etc.

I also tried to use the For command, for ABC[1,1]=DEF SA[SA,1].

I tried using the Locate command and the Insert command, but same
thing, it doesn't stop replacing account wqith the same account number, all 36
records.

For some reason it's not comparing the two expressions like it should and
stopping when they no longer equal each other. Maybe you can't compare 2 arrays
like I'm trying to do. I would be most thankful if anyone can solve this
problem.

Any idea why it's ignore the equal sign and just replacing them all?

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2004-01-31 23:40:48 Re: Sometimes referential integrity seems not to work
Previous Message Stephan Szabo 2004-01-31 20:45:43 Re: Sometimes referential integrity seems not to work