Actually, I'm running MS SQL which should allow me to sub-select.... Usually
I work in MySQL

-J

----- Original Message -----
From: "Frank Flynn" <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Tuesday, February 19, 2002 11:59 PM
Subject: Re: [PHP-DB] SQL


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



-- 
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to