Stephane,
Fantastic! Appreciate the help.

Thanks!

susan


From: "Stephane Faroult" <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
To: Multiple recipients of list ORACLE-L <[EMAIL PROTECTED]>
Subject: RE: RE: vertical serches on a table - how to
Date: Wed, 01 Oct 2003 08:04:31 -0800

>Stephane,
>Apologize for not being clear on my question.
>
>The query you have provided will only return one
>record, ie.
>1 mango  banana.
>
>I need two records to be returned:
>1  mango    banana
>1  grape     pineapple
>
>You're right that by 'vertical', I meant filtering
>according to conditions
>on OTHER rows but at the same time, I want those
>filter conditions to be
>displayed as well, which in this case - grape and
>pineapple.
>
>Any idea.
>
>Thanks.
>
>susan
>

In that case you keep something looking vaguely like the condition in your initial query but add a subquery to check that both conditions are satisfied :

select X1.ID, X1.col1, X1.col2
from     tableX X1
where  (X1.col1='banana')
or     (((X1.col1='mango' and X1.col2='banana')
            or (X1.col1='grape' and X1.col2='pineapple'))
           and 2 = (select count(*)
                    from tableX X2
                    where ((X2.col1='mango'
                           and X2.col2='banana')
                           or (X2.col1='grape'
                           and X2.col2='pineapple'))
                           and X2.ID = X1.ID)));

No guarantee on the proper number of parentheses.

SF

>>
>> >Hi,
>> >I have a table that I would like to perform a
>> >vertical search on. For eg.
>> >
>> >Table X
>> >-----------
>> >ID     COL1     COL2
>> >1      apple     orange
>> >1      mango   banana
>> >1      grape     pineapple
>> >2      mango   banana
>> >2      guava     lemon
>> >
>> >
>> >I would like to display records that meet the
>> >following criteria for *a
>> >particular ID*.
>> >
>> >(COL1=banana)
>> >    OR
>> >(COL1=mango and COL2=banana
>> >AND
>> >COL1=grape and COL2=pineapple
>> >
>> >
>> >The output should be
>> >ID  COL1    COL2
>> >1   mango   banana
>> >1   grape    pineapple
>> >
>> >It should not display
>> >ID  COL1    COL2
>> >2   mango   banana
>> >
>> >since ID=2 did not meet the criteria where
>> >COL1=grape and COL2=pineapple.
>> >
>> >
>> >I tried the following SQL but the output is
>always
>> >zero because COL1 can
>> >never be a mango and a grape and COL2 can never
>be
>> >a
>> >banana and a pineapple at the same time for a
>> >particular ID.
>> >
>> >select ID, col1, col2
>> >from tableX
>> >where       (col1='banana')
>> >or  ((col1='mango' and col2='banana')
>> >      and
>> >     (col1='grape' and col2='pineapple')
>> >     );
>> >
>> >
>> >Any idea how I can do a vertical search on the
>> >table.
>> >
>> >Thanks for any help you can provide.
>> >
>> >susan
>> >
>>
>>Susan,
>>
>>    Took me some time to understand what you meant
>by 'vertical search'.
>>ANDs and ORs in a WHERE clause always apply to the
>current row under
>>scrutiny. What you mean by 'vertical' is that you
>want to filter according
>>to conditions on OTHER rows. This is done by a
>subquery.
>>
>>Your query could read
>>
>>select X1.ID, X1.col1, X1.col2
>>from     tableX X1
>>where  (X1.col1='banana')
>>or       ((X1.col1='mango' and X1.col2='banana')
>>           and EXISTS (select null
>>                         from tableX X2
>>                         where X2.col1='grape'
>>                           and X2.col2='pineapple'
>>                           and X2.ID = X1.ID));
>>
>>Simplifying to the extreme, each different row you
>handle must be returned
>>by its 'own' query.
>>
>>Regards,
>>
>>Stephane Faroult
>>Oriole
--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author: Stephane Faroult
  INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

_________________________________________________________________
Frustrated with dial-up? Get high-speed for as low as $29.95/month (depending on the local service providers in your area). https://broadband.msn.com


--
Please see the official ORACLE-L FAQ: http://www.orafaq.net
--
Author: Susan Tay
 INET: [EMAIL PROTECTED]

Fat City Network Services    -- 858-538-5051 http://www.fatcity.com
San Diego, California        -- Mailing list and web hosting services
---------------------------------------------------------------------
To REMOVE yourself from this mailing list, send an E-Mail message
to: [EMAIL PROTECTED] (note EXACT spelling of 'ListGuru') and in
the message BODY, include a line containing: UNSUB ORACLE-L
(or the name of mailing list you want to be removed from).  You may
also send the HELP command for other information (like subscribing).

Reply via email to