joining from multiple tables

Поиск
Список
Период
Сортировка
От Joseph Shraibman
Тема joining from multiple tables
Дата
Msg-id 3E260E41.30107@selectacast.net
обсуждение исходный текст
Ответы Re: joining from multiple tables
Список 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?



В списке pgsql-sql по дате отправления:

Предыдущее
От: "Ross J. Reedstrom"
Дата:
Сообщение: Re: lost on self joins
Следующее
От: "Matthew Nuzum"
Дата:
Сообщение: show data from two tables together