Problem with joins - Mailing list pgsql-novice

From Sharon Cowling
Subject Problem with joins
Date
Msg-id 200202042004.g14K4ut06515@lambton.sslnz.com
Whole thread Raw
List pgsql-novice
Hi,

I have a query which I need to check if a person has a forest associated with them.
Problem is that I need an outer join on the line that has: and t.permit_id = fk.permit_id as there may not be a
permit_idin the faps_key table.  The person id is set to 858 for testing but will be a variable in the application
code.

This is the original query that does not contain the outer join:

select
p.person_id,
p.type,
t.permit_id,
fp.location1,
fp.location2,
fp.location3,
fk.date_key_due
from person5 p,
faps_permit t,
faps_key fk,
forest_person3 fp
where p.person_id = fp.person_id
and t.permit_id = fk.permit_id
and p.person_id = 858
order by t.permit_id

This is my attempt:

select
p.person_id,
p.type,
t.permit_id,
fp.location1,
fp.location2,
fp.location3,
fk.date_key_due
from person5 p,
forest_person3 fp
INNER JOIN
(faps_permit t LEFT OUTER JOIN faps_key fk
ON t.permit_id = fk.permit_id)
ON p.person_id = t.person_id
where p.person_id = fp.person_id
and p.person_id = 858
order by t.permit_id

ERROR:  Relation 'p' does not exist

I'm doing something wrong obviously but I've managed to confuse myself!
Any hints, help?!  Below is the table structures.

Regards,

Sharon Cowling

taupo=> \d person5
                   Table "person5"
    Attribute     |         Type          | Modifier
------------------+-----------------------+----------
 person_id        | integer               | not null
 firstname        | character varying(25) | not null
 lastname         | character varying(25) | not null
 dob              | date                  | not null
 street           | character varying(50) | not null
 suburb           | character varying(50) |
 city             | character varying(50) | not null
 homephone        | character varying(15) |
 workphone        | character varying(15) |
 mobile           | character varying(15) |
 type             | character varying(30) | not null
 date_approved    | date                  | not null
 approved_by      | character varying(50) | not null
 vehicle_type     | character varying(50) |
 vehicle_rego     | character varying(6)  |
 drivers_licence  | character varying(10) |
 firearms_licence | character varying(20) |
 notes            | character varying(80) |
 status           | character varying(10) |
Indices: firstname_idx,
         fullname_idx,
         lastname_idx,
         person5_drivers_licence_key,
         person5_firearms_licence_key,
         person5_pkey


taupo=> \d forest_person3
            Table "forest_person3"
 Attribute |         Type          | Modifier
-----------+-----------------------+----------
 person_id | integer               | not null
 location1 | character varying(30) |
 location2 | character varying(30) |
 location3 | character varying(30) |
Index: forest_person3_pkey


taupo=> \d faps_permit
                  Table "faps_permit"
     Attribute     |          Type          | Modifier
-------------------+------------------------+----------
 permit_id         | integer                | not null
 person_id         | integer                | not null
 date_from         | date                   | not null
 date_to           | date                   | not null
 location          | character varying(30)  | not null
 purpose           | character varying(30)  | not null
 subpurpose        | character varying(30)  | not null
 vehicle_rego      | character varying(6)   |
 vehicle_type      | character varying(30)  |
 dogs              | character varying(3)   |
 permit_conditions | character varying(200) |
 other_info        | character varying(100) |
 issued_by         | character varying(12)  | not null
 issue_date        | date                   |
 permit_printed    | integer                |
 firearms_licence  | character varying(20)  |
 drivers_licence   | character varying(10)  |
Index: faps_permit_pkey


taupo=> \d faps_key
                  Table "faps_key"
    Attribute    |         Type          | Modifier
-----------------+-----------------------+----------
 key_code        | character varying(6)  | not null
 date_key_issued | date                  |
 date_key_due    | date                  |
 key_issued_by   | character varying(12) |
 description     | character varying(20) |
 comments        | character varying(30) |
 permit_id       | integer               |
 status          | character varying(10) |
Index: faps_key_pkey




pgsql-novice by date:

Previous
From: "Josh Berkus"
Date:
Subject: Re: When to use name verses id
Next
From: "Josh Berkus"
Date:
Subject: Re: Problem with joins