Le 18/06/2011 23:51, Daron Ryan a écrit :
Hello,
I need to search a table to find sets of rows that have a column
matching itself for the whole set and another column matching row for
row with a list I am going to supply. The result I should receive should
be value of the column that matches itself.
For example given the following data in my table:
3; 1
3; 2
4; 8
4; 9
4; 10
I might need to search for 1,2. This should produce the result 3. Or if
I were to search for 8, 9, 10 the result should be 4. Searching for 8, 9
should produce an empty result as should 8, 9, 10, 11.
Can anyone recommend a strategy?
this is a general case of relationnal division.
One way to do this is :
WITH
T0 AS
(SELECT 1 AS N --> all the data to be search each on a separate SELECT
UNION ALL --> with UNION ALL
SELECT 2 AS N)
SELECT TBL_ID
FROM T_MY_TABLE_TBL AS T
INNER JOIN T0
ON T.TBL_VALUE = T0.N
GROUP BY TBL_ID
HAVING COUNT(*) = (SELECT COUNT(*)
FROM T0);
I you read french, I wrote a paper on the relational division :
http://sqlpro.developpez.com/cours/divrelationnelle/
A +
--
Frédéric BROUARD - expert SGBDR et SQL - MVP SQL Server - 06 11 86 40 66
Le site sur le langage SQL et les SGBDR : http://sqlpro.developpez.com
Enseignant Arts & Métiers PACA, ISEN Toulon et CESI/EXIA Aix en Provence
Audit, conseil, expertise, formation, modélisation, tuning, optimisation
*********************** http://www.sqlspot.com *************************
--
Sent via pgsql-general mailing list ([email protected])
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-general