pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Ian Barwick <barwick@gmx.net>
To: Joseph Shraibman <jks@selectacast.net>
To: pgsql-sql@postgresql.org
Subject: Re: How to join from two tables at once?
Date: Tue, 26 Aug 2003 05:46:19 +0200
Message-ID: <200308260546.20084.barwick@gmx.net> (raw)
In-Reply-To: <biebbh$2krq$1@news.hub.org>
References: <biebbh$2krq$1@news.hub.org>

On Tuesday 26 August 2003 02:58, Joseph Shraibman wrote:
> How can I join on one table with join conditions refering to two tables? 
> In this example p is missing an entry that corresponds to u.  I want to
> select from u and p, but have entries in u that don't have an entry in p. 
> The problem is I need to go through table a to get the corresponding value
> in table p, and a LEFT JOIN only operates on two tables. The subselect
> works, but in real life turns out to be a big performance drain.
(...)

> -- doesn't get 2, because there is no entry in p for it
> SELECT u.uid, u.txt, p.val FROM u,a,p WHERE u.uid = p.uid and a.id = u.aid
> and p.pkey = a.pkey;
>
> -- works, but uses a subselect
> SELECT u.uid, u.txt, (SELECT p.val FROM p WHERE p.uid = u.uid AND p.pkey =
> a.pkey) FROM u,a WHERE a.id = u.aid;
>
> --doesn't work: ERROR:  JOIN/ON clause refers to "u", which is not part of
> JOIN SELECT u.uid, u.txt, p.val FROM u,a LEFT JOIN p ON p.uid = u.uid AND
> p.pkey = a.pkey WHERE a.id = u.aid;

Try:

SELECT u.uid, u.txt, p.val
  FROM u
 INNER JOIN a ON (a.id=u.aid)
  LEFT JOIN p ON (p.pkey=a.pkey AND p.uid=u.uid)


Ian Barwick
barwick@gmx.net




view thread (4+ messages)  latest in thread

Message-ID: <200308260546.20084.barwick@gmx.net>
Permalink:  ../200308260546.20084.barwick@gmx.net/
Also on:    postgresql.org/message-id/200308260546.20084.barwick@gmx.net

 · 

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: barwick@gmx.net, jks@selectacast.net
  Subject: Re: How to join from two tables at once?
  In-Reply-To: <200308260546.20084.barwick@gmx.net>

* 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