SQL Syntax / Logic question - Mailing list pgsql-sql

From Michael D. Harlan
Subject SQL Syntax / Logic question
Date
Msg-id 20011004102712.A29819@beechwoodplace.org
Whole thread Raw
Responses Re: SQL Syntax / Logic question  ("Josh Berkus" <josh@agliodbs.com>)
List pgsql-sql
I've been working on this SQL problem for about 12 days now and have asked
for help from friends/colleagues, but haven't found a solution.  I send it
to this list as a last resort.

Let's say I have a table called "friends" and in this table, I have the
following data:

FriendA  FriendB
-------  -------
Mike     Christopher
Jim      Mike
Joe      Sara
Jim      Sara

Let's also say I have another table called "schools" and in this table, I
have the following data:

Person        School
------        ------
Christopher    Akron
Mike        Akron
Jim        OSU
Joe        Kent
Sara        OSU


I want to be able to return all (FriendA, FriendB) pairs in which both
friends went to the same school.  The above example would return only 
these pairs:

Mike, Christopher
Jim, Sara


My initial thinking was that I need a query like this:

select frienda,friendb from friends where "frienda's school" = "friendb's
school";


Translating the pseudo-code into a real query, we have:

select frienda, friendb from friends where (select
schools.school from friends,schools where friends.frienda =
schools.person) = (select schools.school from friends,schools where
friends.friendb = schools.person);


Of course, this doesn't work in real life.  I get the usual error:

ERROR:  More than one tuple returned by a subselect used as an expression.


Is there a way to do this or am I asking for the impossible?


Many thanks for any help you can provide.


Mike Harlan
r3mdh@beechwoodplace.org


pgsql-sql by date:

Previous
From: Gurudutt
Date:
Subject: Need Help!!
Next
From: "Josh Berkus"
Date:
Subject: Re: to_date/to timestamp going to BC