From: | Joseph Shraibman <jks(at)selectacast(dot)net> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | joining from multiple tables |
Date: | 2003-01-16 01:43:29 |
Message-ID: | 3E260E41.30107@selectacast.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
I have a table I want to join on, but the conditions that restrict it span more than one
table. For example:
create table num_tab (thekey int primary key, val int, class char);
create table class_tab (class char primary key, tkey int);
create table txt_tab (thekey int primary key, class int, txt text);
insert into num_tab values (1, 1, 'o');
insert into num_tab values (2, 2, 'e');
insert into num_tab values (3, 3, 'o');
insert into num_tab values (4, 4, 'e');
insert into num_tab values (5, 5, 'o');
insert into num_tab values (6, 6, 'e');
insert into class_tab values('o', 1);
insert into class_tab values('e', 2);
insert into txt_tab values (2, 2,'two');
insert into txt_tab values (4, 2,'four');
insert into txt_tab values (6, 2,'six');
select distinct n.thekey, n.val, t.txt FROM num_tab n LEFT JOIN txt_tab t ON n.thekey =
t.thekey
WHERE n.thekey < 5 AND t.class = class_tab.tkey AND n.class = class_tab.class;
produces:
thekey | val | txt
--------+-----+------
2 | 2 | two
4 | 4 | four
... which is not what we want, because 1,3, and 5 aren't included, but:
select distinct n.thekey, n.val, t.txt FROM num_tab n LEFT JOIN txt_tab t ON n.thekey =
t.thekey AND t.class = class_tab.tkey AND n.class = class_tab.class
WHERE n.thekey < 5;
produces:
NOTICE: Adding missing FROM-clause entry for table "class_tab"
ERROR: JOIN/ON clause refers to "class_tab", which is not part of JOIN
So how do I do this?
From | Date | Subject | |
---|---|---|---|
Next Message | Ludwig Lim | 2003-01-16 01:59:32 | Re: RFC: A brief guide to nulls |
Previous Message | Matthew Nuzum | 2003-01-16 01:01:30 | show data from two tables together |