Julien Cigar escreveu:
Hello,

I have a problem with the ALL() subquery expression.
I have three tables:
- specimens
- test_bits
- specimen_test_bits

The specimen_test_bits table contains two foreign keys, one to
specimens(id), another to test_bits(id).
Here is an output of specimen_test_bits:

muridae=> select * from specimen_test_bits;
specimen_id | test_bit_id -------------+-------------
       46096 |           1
       46096 |           2
       46096 |           3
       46096 |           4
       52894 |           1
       52894 |           3
       12546 |           2

What I would like is a query that returns all the specimen_id of this table which have _all_ the given test_bit_id. So in this case, with test_bit_id 1,2,3,4 it should return only specimen_id 46096.

With the following I got a syntax error:
select specimen_id from specimen_test_bits where test_bit_id = all(1,2,3,4);

The following works but no rows are returned :
select specimen_id from specimen_test_bits where test_bit_id = all(select id from test_bits where id in (1,2,3,4));

Any idea how I could do this ? I guess the problem is my ALL() expression ...



Unclear, but works...

SELECT DISTINCT stb.specimen_id FROM specimen_test_bits stb
WHERE NOT EXISTS (SELECT * FROM (VALUES (1), (2), (3) , (4)) AS foo(id) WHERE NOT EXISTS (SELECT stb1.test_bit_id FROM specimen_test_bits stb1 WHERE foo.id = stb1.test_bit_id AND stb.specimen_id = stb1.specimen_id));

Osvaldo

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

              http://www.postgresql.org/docs/faq

Reply via email to