Gary, First: Go out and buy "SQL for Smarties". Now. Read it. However, I'll give you this one as a freebie: > I've got a table 'phones' which has an indexed key 'pid' of type > int4, and a > phone number of type varchar(12). > > I've then got a table 'members' which as an index key 'mid' of type > int4. SELECT members.mid, members.name, members.address, hp.phone AS home_phone, wp.phone AS work_phone, cp.phone as cell_phone FROM members LEFT OUTER JOIN (SELECT mid, phone FROM phones WHERE ptype = 'home') hp ON members.mid = hp.mid LEFT OUTER JOIN (SELECT mid, phone FROM phones WHERE ptype = 'work') wp ON members.mid = wp.mid LEFT OUTER JOIN (SELECT mid, phone FROM phones WHERE ptype = 'cell') cp ON members.mid = cp.mid ORDER BY members.name; You're experiencing the usual problem encountered by procedural programmers when they first start on SQL. SQL is a declarative language, and requires a different knid of thinking than procedural languages. Thus the use of table aliasing and subselects above. Have fun! -Josh ______AGLIO DATABASE SOLUTIONS___________________________ Josh Berkus Complete information technology [EMAIL PROTECTED] and data management solutions (415) 565-7293 for law firms, small businesses fax 621-2533 and non-profit organizations. San Francisco
---------------------------(end of broadcast)--------------------------- TIP 4: Don't 'kill -9' the postmaster