pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Daniel Hernandez <breydan@excite.com>
To: cww@denterprises.org
To: pgsql-sql@postgresql.org
Subject: Re: JOIN a table twice for different values in the same query
Date: Thu, 10 Jan 2008 17:21:53 -0500 (EST)
Message-ID: <20080110222153.639A58B31B@xprdmxin.myway.com> (raw)

 js=# SELECT departure_date, departure.code AS departure_code, arrival.code as arraival_codeFROM jsjourneys         JOIN jsports as departure ON jsjourneys.departure_port = departure.id         JOIN jsports as arrival on jsjourneys.arraival_port = arraival.id LIMIT4;
Regards,Daniel Hernández.San Diego, CA.&quot;The more you learn, more you earn&quot;. --- On Thu 01/10, Colin Wetherbee &lt; cww@denterprises.org &gt; wrote:From: Colin Wetherbee [mailto: cww@denterprises.org]To: pgsql-sql@postgresql.orgDate: Thu, 10 Jan 2008 17:07:00 -0500Subject: [SQL] JOIN a table twice for different values in the same queryGreetings.I have two tables I'm having a little trouble figuring out how to JOIN.One contains a list of airports along with their IATA codes, cities, names, and so forth.  This table also contains an id column, which is a serial primary key.The other table contains a list of flights, each of which has a departure_port and an arrival_port, which are foreign keys referencing the id field of the first table.I would like to construct a query on the flight table that returns the names of both the departure port and the arrival port.The following query shows how I would get just the departure port.js=# SELECT departure_date, jsports.code AS 
departure_code FROMjsjourneys JOIN jsports ON jsjourneys.departure_port = jsports.id LIMIT4;  departure_date | departure_code----------------+----------------  2006-11-19     | ATL  2006-11-16     | ATL  2006-11-19     | BHM  2007-02-03     | BOS(4 rows)When I SELECT jsports.code, the result comes from the JOIN ... ON jsjourneys.departure_port = jsports.id.I would *also* like to include something in the query to get the jsports.code for jsjourneys.arrival_port, but I'm unsure how to do this, since SELECTing jsports.code twice would be ambiguous (and, in any case, just duplicates the departure_code).I'd like to produce a result set that looks something like the following (which doesn't come from a real query).  departure_date | departure_code | arrival_code----------------+----------------+--------------  2006-11-19     | ATL            | JFK  2006-11-16     | ATL            | DFW  2006-11-19     | BHM            | IAH  2007-02-03     | BOS            | LAXI'd appreciate some 
help.FYI, table definitions for jsjourneys and jsports follow.js=# \d jsjourneys                                         Table &quot;public.jsjourneys&quot;        Column        |           Type           |    Modifiers---------------------+--------------------------+---------------------------------------------------------  id                  | bigint                   | not null default nextval('jsjourneys_id_seq'::regclass)  userid              | bigint                   | not null  typeid              | integer                  | not null  carrier             | integer                  |  number              | integer                  |  departure_port      | integer                  | not null  arrival_port        | integer                  | not null  departure_gate      | character varying        |  arrival_gate        | character varying        |  departure_date      | date                     | not null  fare_class          | integer                  |  
scheduled_departure | timestamp with time zone |  scheduled_arrival   | timestamp with time zone |  actual_departure    | timestamp with time zone |  actual_arrival      | timestamp with time zone |  equipment           | integer                  |  notes               | character varying(1500)  |  seat                | character varying(4)     |  confirmation        | character varying(20)    |Indexes:     &quot;jsjourneys_pkey&quot; PRIMARY KEY, btree (id)Foreign-key constraints:     &quot;jsjourneys_arrival_port_fkey&quot; FOREIGN KEY (arrival_port) REFERENCES jsports(id)     &quot;jsjourneys_carrier_fkey&quot; FOREIGN KEY (carrier) REFERENCES jscarriers(id)     &quot;jsjourneys_departure_port_fkey&quot; FOREIGN KEY (departure_port) REFERENCES jsports(id)     &quot;jsjourneys_equipment_fkey&quot; FOREIGN KEY (equipment) REFERENCES jsequipment(id)     &quot;jsjourneys_fare_class_fkey&quot; FOREIGN KEY (fare_class) REFERENCES jsfareclasses(id)     
&quot;jsjourneys_typeid_fkey&quot; FOREIGN KEY (typeid) REFERENCES jsjourneytypes(id)     &quot;jsjourneys_userid_fkey&quot; FOREIGN KEY (userid) REFERENCES jsusers(id)js=# \d jsports                                 Table &quot;public.jsports&quot;   Column   |       Type        |                      Modifiers -----------+-------------------+------------------------------------------------------  id        | integer           | not null default nextval('jsports_id_seq'::regclass)  code      | character varying | not null  city      | character varying | not null  full_city | character varying | not null  name      | character varying |Indexes:     &quot;jsports_pkey&quot; PRIMARY KEY, btree (id)     &quot;jsports_index_city&quot; btree (city)     &quot;jsports_index_code&quot; btree (code)Thanks!Colin---------------------------(end of broadcast)---------------------------TIP 4: Have you searched our list archives?               http://archives.postgresql.org

_______________________________________________
Join Excite! - http://www.excite.com
The most personalized portal on the Web!

view thread (9+ messages)  latest in thread

Message-ID: <20080110222153.639A58B31B@xprdmxin.myway.com>
Permalink:  ../20080110222153.639A58B31B@xprdmxin.myway.com/
Also on:    postgresql.org/message-id/20080110222153.639A58B31B@xprdmxin.myway.com

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-sql@postgresql.org
  Cc: breydan@excite.com, cww@denterprises.org
  Subject: Re: JOIN a table twice for different values in the same query
  In-Reply-To: <20080110222153.639A58B31B@xprdmxin.myway.com>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox