Thread: select question

select question

From
george young
Date:
[postgreql 7.2, linux]
I have a table T with columns run, wafer, and test:  T(run text, wafer int, test text)
Given a run and a set of wafers, I need the set of tests that match
*all* the specified wafers:

run    wafer    test
a    1    foo
a    2    foo
a    3    foo
a    3    bar

E.g. Given run 'a' and wafers (1,3) I should get one row: foo, since only foo matches both 1 and 3. Given run 'a' and
wafers(3) I should get two rows: foo,bar, since both foo and bar match 3.
 

Is there some neat way to do this in a single query?

Puzzled,George


-- I cannot think why the whole bed of the ocean isnot one solid mass of oysters, so prolific they seem. Ah,I am
wandering!Strange how the brain controls the brain!-- Sherlock Holmes in "The Dying Detective"
 


Re: select question

From
Wei Weng
Date:
You can use this query

SELECT * FROM TWHERE run = 'a' AND wafer = 1 AND test = 'foo'
UNION
SELECT * FROM TWHERE run = 'a' AND wafer = 2 AND test = 'foo'
UNION
SELECT * FROM TWHERE run = 'a' AND wafer = 3 AND test = 'foo'
UNION
SELECT * FROM TWHERE run = 'a' AND wafer = 3 AND test = 'bar'



On Wed, 2002-08-28 at 16:12, george young wrote:
> [postgreql 7.2, linux]
> I have a table T with columns run, wafer, and test:
>    T(run text, wafer int, test text)
> Given a run and a set of wafers, I need the set of tests that match
> *all* the specified wafers:
> 
> run    wafer    test
> a    1    foo
> a    2    foo
> a    3    foo
> a    3    bar
> 
> E.g.
>   Given run 'a' and wafers (1,3) I should get one row: foo, since only foo matches both 1 and 3.
>   Given run 'a' and wafers (3) I should get two rows: foo,bar, since both foo and bar match 3.
> 
> Is there some neat way to do this in a single query?
> 
> Puzzled,
>     George
> 
> 
> -- 
>  I cannot think why the whole bed of the ocean is
>  not one solid mass of oysters, so prolific they seem. Ah,
>  I am wandering! Strange how the brain controls the brain!
>     -- Sherlock Holmes in "The Dying Detective"
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
> 
> http://archives.postgresql.org
> 
-- 
Wei Weng
Network Software Engineer
KenCast Inc.




Re: select question

From
eric soroos
Date:
On Wed, 28 Aug 2002 16:12:41 -0400 in message <20020828161241.50a8512d.gry@ll.mit.edu>, george young <gry@ll.mit.edu>
wrote:
> [postgreql 7.2, linux]
> I have a table T with columns run, wafer, and test:
>    T(run text, wafer int, test text)
> Given a run and a set of wafers, I need the set of tests that match
> *all* the specified wafers:
> 
> run    wafer    test
> a    1    foo
> a    2    foo
> a    3    foo
> a    3    bar
> 
> E.g.
>   Given run 'a' and wafers (1,3) I should get one row: foo, since only foo matches both 1 and 3.
>   Given run 'a' and wafers (3) I should get two rows: foo,bar, since both foo and bar match 3.
> 
> Is there some neat way to do this in a single query?
> 

select test from T where run='a'    and wafers in ('1','3') group by test    
eric