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
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!! |