Re: join question - three tables, two with foreign keys to the first

From: "Dmitri Colebatch" <dim(at)bigpond(dot)net(dot)au>
To: <pgsql-sql(at)postgresql(dot)org>
Subject: Re: join question - three tables, two with foreign keys to the first
Date: 2002-06-13 14:32:59
Message-ID: 08da01c212e7$37bf1450$fe00a8c0@hobbes
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

maybe just to qualify, I get this:

select emp.name, lv.from_date, lv.to_date, pay.amount
from employee as emp
left join employee_leave as lv on emp.id = lv.employee_id
left join employee_pay as pay on emp.id = pay.employee_id
where emp.id = 1;

name | from_date | to_date | amount
------+------------+------------+--------
dim | 2002-10-05 | 2002-05-14 | 100
dim | 2002-10-05 | 2002-05-14 | 100
dim | 2002-10-06 | 2002-06-14 | 100
dim | 2002-10-06 | 2002-06-14 | 100
(4 rows)

but would expect the results to be

name | from_date | to_date | amount
------+------------+------------+--------
dim | 2002-10-05 | 2002-05-14 | (null)
dim | 2002-10-05 | 2002-05-14 | (null)
dim | (null) | (null) | 100
dim | (null) | (null) | 100
(4 rows)

am I missing something?

ta again
dim

----- Original Message -----
From: "Dmitri Colebatch" <dim(at)bigpond(dot)net(dot)au>
To: <pgsql-sql(at)postgresql(dot)org>
Sent: Friday, June 14, 2002 12:13 AM
Subject: [SQL] join question - three tables, two with foreign keys to the
first

> hey all,
>
> here's my situation. three tables:
>
> create table employee (id integer primary key, name varchar(32));
> create table employee_leave (id integer primary key, employee_id integer,
> from_date date, to_date date, constraint emp_leave_fk foreign key
> (employee_id) references employee (id));
> create table employee_pay (id integer primary key, employee_id integer,
> amount integer, constraint emp_pay_fk foreign key (employee_id) references
> employee (id));
>
> and some sample data:
>
> insert into employee (id, name) values (1, 'dim');
> insert into employee_leave (id, employee_id, from_date, to_date) values
(2,
> 1, '10-05-2002', '14-05-2002');
> insert into employee_leave (id, employee_id, from_date, to_date) values
(1,
> 1, '10-06-2002', '14-06-2002');
> insert into employee_pay(id, employee_id, amount) values (1, 1, 100);
> insert into employee_pay(id, employee_id, amount) values (2, 1, 100);
>
> and I want to retrieve the information for an employee (all pay, and all
> leave) in one query.... here's what I've got
>
> select emp.name, lv.from_date, lv.to_date, pay.amount
> from employee as emp
> left outer join employee_leave as lv on emp.id = lv.employee_id
> left outer join employee_pay as pay on emp.id = pay.employee_id
> where emp.id = 1
>
> problem is that I dont get the null values I expect.... I want to be able
to
> iterate through the resultset and determine if the record is from the
leave
> table or pay table - but because I dont get null results, I cant....
>
> any pointers/suggestions would be welcome.
>
> cheers
> dim
>
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Tom Lane 2002-06-13 14:36:00 Re: Rule problem
Previous Message Dmitri Colebatch 2002-06-13 14:13:22 join question - three tables, two with foreign keys to the first