Re: sub-query question

From: Michael Fuhr <mike(at)fuhr(dot)org>
To: Scott Frankel <leknarf(at)pacbell(dot)net>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: sub-query question
Date: 2004-11-12 18:26:14
Message-ID: 20041112182614.GA22852@winnie.fuhr.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Fri, Nov 12, 2004 at 09:52:09AM -0800, Scott Frankel wrote:
>
> How does one embed a sub-query lookup to one table in order to
> replace a foreign key id number with it's name in a SELECT on a
> second table?

You're talking about joins.

http://www.postgresql.org/docs/7.4/static/tutorial-join.html
http://www.postgresql.org/docs/7.4/static/queries-table-expressions.html

> i.e.: given the following two tables, I want to replace the color_id
> of 1
> with the color_name 'red.' (The SQL to create the two tables follows
> below.)
>
> test=# SELECT * from users ;
> color_id | name | the_date
> ----------+------+------------
> 1 | john | 2004-03-10
> 3 | jane | 2004-04-12
> 1 | joe | 2004-05-14
> 2 | jepe | 2004-06-16
>
> test=# SELECT * from colors;
> color_id | color_name
> ----------+------------
> 1 | red
> 2 | green
> 3 | blue

There are at least four ways to write the join query you want:

SELECT color_name, name, the_date
FROM users NATURAL JOIN colors;

SELECT color_name, name, the_date
FROM users JOIN colors USING (color_id);

SELECT color_name, name, the_date
FROM users JOIN colors ON colors.color_id = users.color_id;

SELECT color_name, name, the_date
FROM users, colors
WHERE users.color_id = colors.color_id;

Debate exists about which of the above is "better." I tend to use
the second and third forms because I think they most clearly document
how the tables are joined, and because I think of the WHERE clause
as meaning "...and here are the records I want from all that."

Of course that's just my opinion. I could be wrong.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Michael Fuhr 2004-11-12 18:31:28 Re: sub-query question
Previous Message Tom Lane 2004-11-12 18:23:20 Re: sub-query question