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

Reply via email to