Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
SQL Problem
Message
De
05/02/2011 20:52:49
 
 
À
04/02/2011 14:42:16
Information générale
Forum:
Visual FoxPro
Catégorie:
Base de données, Tables, Vues, Index et syntaxe SQL
Titre:
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows 7
Database:
Visual FoxPro
Divers
Thread ID:
01498808
Message ID:
01498906
Vues:
55
Thank you Boris and Naomi!

>>>>Hi All:
>>>>
>>>>Consider the following table:
>>>>
>>>>
>>>>Artnum    Catnum
>>>>111         INT
>>>>111         ISR
>>>>111         GRP
>>>>222         INT
>>>>222         RSA
>>>>222         GRP
>>>>
>>>>
>>>>I want a select statement that says 'give me all the records for a particular artnum WHERE the artnum belongs to a catnum of BOTH 'INT' and 'ISR'.
>>>>
>>>>This would produce the following list:
>>>>
>>>>
>>>>111         INT
>>>>111         ISR
>>>>111         GRP
>>>>
>>>>
>>>>Thanks,
>>>>
>>>>Yossi
>>>
>>>This is the problem that is called Relational Divison Problem. Peter Larsson has a very interesting blog about it.
>>>
>>>http://sqlblog.com/blogs/peter_larsson/archive/2010/06/30/relational-algebra.aspx
>>>
>>>one of the possible solutions:
>>>
>>>select ArtNum from YourTable
>>>where CartNum IN ('INT','ISR')
>>>group by ArtNum
>>>having MIN(CatNum) = 'INT' and MAX(CatNum) = 'ISR'
>>
>>This produces only one record. What do you think of Sergey's 2 solutions?
>
>
>:-)
>
>SELECT YourTable.*
>FROM YourTable
>INNER JOIN (select ArtNum 
>                   from YourTable
>            where CartNum IN ('INT','ISR')
>            group by ArtNum
>            having MIN(CatNum) = 'INT' and MAX(CatNum) = 'ISR') Tbl1
>      ON YourTable.ArtNum = Tbl1.ArtNum 
>
>
>> What do you think of Sergey's 2 solutions?
>
>They are great (as always)
>But Naomi here gives you just another way. Sometimes you must know all possible ways so you can choose the best.
>Turn Actual Execution Plan ON and run all queries, then analyse the result :-)
Précédent
Répondre
Fil
Voir

Click here to load this message in the networking platform