Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Error correlating fields
Message
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Network:
Windows 2003 Server
Database:
MS SQL Server
Divers
Thread ID:
01533734
Message ID:
01533741
Vues:
55
This message has been marked as the solution to the initial question of the thread.
>>>Hi everybody,
>>>
>>>I'm getting the title's error on this SQL
>>>
>>>
>>>SELECT V.*,1 as DupType FROM csrVendors V ;
>>>INNER JOIN (select MIN(ID) as MinID, UPPER(full_name) as Full_Name FROM csrVendors GROUP BY 2 HAVING COUNT(*) > 1) Dups ;
>>>ON UPPER(V.full_name) = Dups.full_name AND V.ID > Dups.MinID ;
>>>UNION ;
>>>SELECT V.*, 2 as DupType FROM csrVendors V WHERE exists (SELECT full_name FROM i_vendor VV ;
>>>WHERE UPPER(VV.full_name) = UPPER(V.full_name)) ;
>>>INTO CURSOR csrVendorDups NOFILTER
>>>
>>>Do you see what may be wrong here?
>>>
>>>Thanks in advance.
>>
>>This is the culprit:
>>
>>SELECT V.*, 2 as DupType;
>>       FROM csrVendors V;
>>WHERE EXISTS (SELECT full_name;
>>                     FROM i_vendor VV ;
>>              WHERE UPPER(VV.full_name) = UPPER(V.full_name)) ;
>>INTO CURSOR csrVendorDups NOFILTER
>>
>>
>>Change it to:
>>
>>SELECT V.*, 2 as DupType;
>>       FROM csrVendors V;
>>WHERE EXISTS (SELECT full_name;
>>                     FROM i_vendor VV ;
>>              WHERE VV.full_name = V.full_name) ;
>>INTO CURSOR csrVendorDups NOFILTER
>>
>>if you can.
>
>Hmm, are you sure? I really want to test based on the upper function as I don't know the case used in advance. I guess I can switch to LEFT JOIN then.



Test it:
CREATE CURSOR csrVendors (Id I, Full_Name C(20))
CREATE CURSOR i_vendor (Full_Name C(20))


*SELECT V.*,1 as DupType;
       FROM csrVendors V ;
INNER JOIN (select MIN(ID) as MinID,;
                   UPPER(full_name) as Full_Name;
            FROM csrVendors;
            GROUP BY 2;
            HAVING COUNT(*) > 1) Dups ;
     ON UPPER(V.full_name) = Dups.full_name AND V.ID > Dups.MinID ;
UNION ;

SELECT V.*, 2 as DupType;
       FROM csrVendors V;
WHERE EXISTS (SELECT full_name;
                     FROM i_vendor VV ;
              WHERE VV.full_name = V.full_name) ;
INTO CURSOR csrVendorDups NOFILTER
BROW NORMAL

SELECT V.*, 2 as DupType;
       FROM csrVendors V;
WHERE EXISTS (SELECT full_name;
                     FROM i_vendor VV ;
              WHERE UPPER(VV.full_name) = UPPER(V.full_name)) ;
INTO CURSOR csrVendorDups NOFILTER   && BOOM :-)
And becuase you use EXISTS you can use INNER JOIN instead of LEFT.
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform