Thread: Outer join question?
Hello, I have three tables that create a many-to-many relationship between two of them. One of them has person data and one of them has contact data, and, of course, the other is the bridge table. I want to select all the people in the people table with the last name like Smith and join it with their contact information. Sometimes they have no contact information, but I want to put them on my list anyway. I typically use the old syntax of the "where clause" to join tables, so I have two questions. Is there a syntax in postgres to do an outer join using the "where clause" and what would be the correct syntax to join the three tables using the newer standard, SELECT last_name, first_name, contact FROM people LEFT (or RIGHT) JOIN bridge ON bridge.peopleid = people.peopleid JOIN contact ON bridge.contactid = contact.contactid WHERE last_name like 'Smi%';? The above query is incorrect and I can't seem to get the result I'm looking for. Thanks, Carol PS This is PostgreSQL 8.3.6, running on a Solaris 10 box.
Hi, > I have three tables that create a many-to-many relationship between two > of them. One of them has person data and one of them has contact data, > and, of course, the other is the bridge table. I want to select all the > people in the people table with the last name like Smith and join it > with their contact information. Sometimes they have no contact > information, but I want to put them on my list anyway. I typically use > the old syntax of the "where clause" to join tables, so I have two > questions. Is there a syntax in postgres to do an outer join using the > "where clause" and what would be the correct syntax to join the three > tables using the newer standard, > > SELECT last_name, first_name, contact > FROM people > LEFT (or RIGHT) JOIN bridge ON bridge.peopleid = people.peopleid > JOIN contact ON bridge.contactid = contact.contactid > WHERE last_name like 'Smi%';? > > The above query is incorrect and I can't seem to get the result I'm > looking for. I think both joins should be LEFT. -- Aurimas
You're right. This did it. Thanks, Carol On Apr 8, 2009, at 9:12 AM, Aurimas Černius wrote: > Hi, > >> I have three tables that create a many-to-many relationship between >> two >> of them. One of them has person data and one of them has contact >> data, >> and, of course, the other is the bridge table. I want to select all >> the >> people in the people table with the last name like Smith and join it >> with their contact information. Sometimes they have no contact >> information, but I want to put them on my list anyway. I typically >> use >> the old syntax of the "where clause" to join tables, so I have two >> questions. Is there a syntax in postgres to do an outer join using >> the >> "where clause" and what would be the correct syntax to join the three >> tables using the newer standard, >> >> SELECT last_name, first_name, contact >> FROM people >> LEFT (or RIGHT) JOIN bridge ON bridge.peopleid = people.peopleid >> JOIN contact ON bridge.contactid = contact.contactid >> WHERE last_name like 'Smi%';? >> >> The above query is incorrect and I can't seem to get the result I'm >> looking for. > > > I think both joins should be LEFT. > > > -- > Aurimas > > -- > Sent via pgsql-novice mailing list (pgsql-novice@postgresql.org) > To make changes to your subscription: > http://www.postgresql.org/mailpref/pgsql-novice