Thread: select question
[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"
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.
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