SQL Syntax / Logic question

From: "Michael D(dot) Harlan" <r3mdh(at)beechwoodplace(dot)org>
To: pgsql-sql(at)postgresql(dot)org
Subject: SQL Syntax / Logic question
Date: 2001-10-04 14:27:12
Message-ID: 20011004102712.A29819@beechwoodplace.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: 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(at)beechwoodplace(dot)org

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Josh Berkus 2001-10-04 14:44:14 Re: to_date/to timestamp going to BC
Previous Message Heather Johnson 2001-10-04 14:17:28 Re: Need Help!!