Jonathan, You didn't mention which DBMS you're using (Oracle, MySQL, MS SQL, ...) and the are each a little different but I'll try to solve with fairly generic SQL:
My personal preference is keep it simple, break up the SQL if it helps (and I think it would help here). I'd use a third table, it will make this very simple. /* not sure what datatype cardnumber is but it doesn't matter */ /* just make this match */ CREAT TABLE TroubleItems (cardnumber int, numAuth int, numCharg int) INSERT INTO TroubleItems SELECT cardnumber, count(*), 0 FROM authtable GROUP BY cardnumber UPDATE TroubleItems set numCharg = (SELECT count(*) FROM chargetable WHERE TroubleItems. cardnumber = chargetable. cardnumber) /* delete the ones that do match (they aren't trouble) */ DELETE TroubleItems WHERE numAuth = numCharg /* Now the report you want is easy */ SELECT * FROM TroubleItems /* then drop or empty TroubleItems - or delete the rows as they are fixed */ /* but don't run this again unless you empty TroubleItems */ I did test this on MS SQL server and it works fine there. The only thing I'm the least fuzzy on is will this update statement work in MySQL (MySQL is a little weak with sub-queries). Even if that command fails you can walk the list by selecting the cardnumber and doing a for each loop inside of PHP - this would take a little longer but it would give you valid results. Good Luck, Frank On 2/19/02 6:16 PM, "[EMAIL PROTECTED]" <[EMAIL PROTECTED]> wrote: > From: "Jonathan Underfoot" <[EMAIL PROTECTED]> > Date: Tue, 19 Feb 2002 16:28:32 -0500 > To: "Rick Emery" <[EMAIL PROTECTED]>, "[PHP-DB]" <[EMAIL PROTECTED]> > Subject: Re: [PHP-DB] SQL > > ok... authorizations and charges... two tables.. > > Card Number 1 gets authorized 20 times for use (20 rows in the > authorizations table) and when the transaction is completed they get charged > 20 times (20 rows in the charges table) .. however we've been finding that > authorizations are not always ending in charges. (Essentially people are > cheating the system) and I need to find out who. Card numbers are the > same... I ran this without the num1=num2 and it gave me very bad results.. I > think my counts are off base. num1 and num2 were the same for all of them. > I know this isn't the case. > > so... > > SELECT authtable.cardnumber, count(authtable.cardnumber) as num1, > count(chargetable.cardnumber) as num2 FROM authtable, chargetable WHERE > authtable.cardnumber = chargetable.cardnumber AND num1 != num2 > > is what I'm shooting for logically.. once again.. I think the counts are > messed up... (I might be completely off base here..) > > Thanx, > > -Jonathan > > -- PHP Database Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php