am Tue, dem 24.04.2007, um 14:19:05 -0700 mailte finecur folgendes: > Hi, > > Here is my first table: > > Table1 > > name| ids > ------------------------- > Peter| 2, 3, 4, 5 > Jack| 100, 34, 3 > > Both name and ids are in text format. > > Here is my second table > > Table2 > > id | Flag | Title > --------------------- > 2 | Red | good > 3 | Blue | poor > 4 | Green| middle > > id is in integer (serial) format. > > I would like to list all the rows in table 2 where the id is in the > ids field of peter. So I did > > select * from tables where id in (select ids from table1 where > name='Peter') > > It did not work. How can I do the query? Broken design, you should normalise your schema. Okay, let me try a solution: First, create a function: create or replace function ids(text) returns setof t2 as $$ declare _ids text; _sql text; _rec record; begin select into _ids ids from t1 where name = $1; _sql := 'select * from t2 where id in (' || coalesce(_ids,'NULL') || ');'; for _rec in execute _sql loop return next _rec; end loop; end; $$ language plpgsql; Hint: the coalesce avoid errors if there are no result. Okay, we have 2 tables: test=*# select * from t1; name | ids -------+------------ Peter | 2, 3, 4, 5 Jack | 100, 34, 3 (2 rows) test=*# select * from t2; id | flag | title ----+-------+-------- 2 | Red | good 3 | Blue | poo 4 | Green | middle (3 rows) test=*# select * from ids('Peter'); id | flag | title ----+-------+-------- 2 | Red | good 3 | Blue | poo 4 | Green | middle (3 rows) test=*# select * from ids('Jack'); id | flag | title ----+------+------- 3 | Blue | poo (1 row) test=*# select * from ids('nobody'); id | flag | title ----+------+------- (0 rows) Andreas -- Andreas Kretschmer Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header) GnuPG-ID: 0x3FFF606C, privat 0x7F4584DA http://wwwkeys.de.pgp.net