From: | Franco Bruno Borghesi <franco(at)akyasociados(dot)com(dot)ar> |
---|---|
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:22:08 |
Message-ID: | 4194FF50.1020303@akyasociados.com.ar |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
something == otherthing is a boolean expression, you are asking the
database to compare both values, u.color_id is not equal c.color_name,
that's why you get 'f'.
I guess that you want to replace the color_id from users by the
corresponding color_name from colors:
SELECT
c.color_name, u.name, u.the_date
FROM
users u
INNER JOIN colors c ON (u.color_id=c.color_id)
WHERE
u.color_id = 1
ORDER BY u.the_date DESC LIMIT 1;
If you were trying to do another thing, I'm sorry, I didn't get it :(
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?
>
> 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
> (4 rows)
>
> test=# SELECT * from colors;
> color_id | color_name
> ----------+------------
> 1 | red
> 2 | green
> 3 | blue
> (3 rows)
>
>
> My attempts yield an 'f' which looks suspiciously like a boolean false.
> Is there an ordering issue with my sub-query, such that the sub-query
> doesn't have enough info to perform its lookup?
>
> Here's my query:
>
> SELECT (
> u.color_id = (
> SELECT c.color_name
> FROM colors c
> WHERE color_id = 1)) AS color_name,
> u.name, u.the_date
> FROM users u
> WHERE u.color_id = 1
> ORDER BY u.the_date DESC LIMIT 1;
>
> It returns:
>
> color_name | name | the_date
> ------------+------+------------
> f | joe | 2004-05-14
> (1 row)
>
>
> Thanks!
> Scott
>
>
> Here's the SQL to create my test tables:
>
> CREATE TABLE colors (color_id SERIAL PRIMARY KEY, color_name text);
> CREATE TABLE users (color_id integer REFERENCES colors, name text,
> the_date date);
>
> INSERT INTO colors (color_name) VALUES ('red');
> INSERT INTO colors (color_name) VALUES ('green');
> INSERT INTO colors (color_name) VALUES ('blue');
>
> INSERT INTO users (color_id, name, the_date) VALUES (1, 'john',
> '2004-03-10');
> INSERT INTO users (color_id, name, the_date) VALUES (3, 'jane',
> '2004-04-12');
> INSERT INTO users (color_id, name, the_date) VALUES (1, 'joe',
> '2004-05-14');
> INSERT INTO users (color_id, name, the_date) VALUES (2, 'jepe',
> '2004-06-16');
>
>
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2004-11-12 18:23:20 | Re: sub-query question |
Previous Message | Scott Frankel | 2004-11-12 17:52:09 | sub-query question |