| Oracle FAQ | Your Portal to the Oracle Knowledge Grid | |
Home -> Community -> Mailing Lists -> Oracle-L -> Re: SQL question
I am not too proud of it, but it works:
SQL> set verify off
SQL> select * from foo;
ITEM PA
---------- --
1 A
2 A
2 B
3 A
3 B
3 C
6 rows selected.
SQL> @fooquery
Enter value for combination: A
ITEM
1
SQL> @fooquery
Enter value for combination: A,B
ITEM
2
SQL> @fooquery
Enter value for combination: A,B,C
ITEM
3
SQL> !cat fooquery.sql
select a.item
from (select item,
ltrim(sys_connect_by_path(part, ','), ',') combination,
level parts
from foo
connect by nocycle item = prior item
and part != prior part) a,
(select item, count(*) cnt
from foo
group by item) b
where a.parts = b.cnt
Note that it generates all combination. Entertaining, but I wouldn't try it on large numbers of rows.
HTH S Faroult
On Fri, 2006-01-13 at 14:30 -0500, Sandeep Dubey wrote:
> Hi,
>
> I am having tough time writing a select query. I won't blame it on
> Friday afternoon, it is really difficult to me.
>
> Here is an example:
>
> create table foo ( item number, part varchar2(2));
>
> insert into foo values(1,'A');
> insert into foo values(2,'A');
> insert into foo values(2,'B');
> insert into foo values(3,'A');
> insert into foo values(3,'B');
> insert into foo values(3,'C');
>
> I want to query for item that matches exact parts given in the query.
> i.e.if I query for part A, I should get 1 ( no 2 and 3)
>
> If I pass A and B , I should get only 2 (no 3)
> If I query for A, B and C, I should get only 3.
>
> Query can have n number of parts, It should return only that item that
> has exact match to parts, no less no more.
>
> Thanks
>
>
> Sandeep
> --
> http://www.freelists.org/webpage/oracle-l
>
-- http://www.freelists.org/webpage/oracle-lReceived on Fri Jan 13 2006 - 21:44:43 CST
![]() |
![]() |