pg.ddx.io  pgsql-sql@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: Dan Langille <dan@langille.org>
To: Marko Asplund <aspa@kronodoc.fi>
Cc: pgsql-sql@postgresql.org
Subject: Re: Oracle outer join porting question
Date: Wed, 15 Jan 2003 09:38:46 -0500
Message-ID: <3E252C26.23327.2ECB5DE9@localhost> (raw)
In-Reply-To: <Pine.LNX.4.44.0301151619570.17243-100000@gamay.kronodoc.fi>

On 15 Jan 2003 at 16:31, Marko Asplund wrote:

> 
> i'm trying to port an existing application from Oracle8i to PostgreSQL but
> i'm having problems understanding a certain outer join query type used in
> the application. the query includes a normal outer join between two tables
> but also uses outer join syntax to join a table with a constant. here's a
> simplified version of the query:
> 
> SELECT doc.id,doc.title,sub.user_id,sub.operation
>   FROM document doc, document_subscription sub
>   WHERE 6 = sub.user_id(+) AND sub.document_id(+) = doc.id;
> 
> what does the '6 = sub.user_id(+)' condition exactly do in this query?  
> how would this be translated SQL92 join syntax used by PostgreSQL?
> 
> i've tried converting it to:
> 
> SELECT doc.id,doc.title,sub.user_id,sub.operation
>   FROM document doc LEFT OUTER JOIN document_subscription sub
>   ON sub.document_id = doc.id
>   WHERE (sub.user_id = 6 OR sub.user_id IS NULL);
> 
> but this query is missing the rows in the documents table which have a
> corresponding document_subscription row with 'not user_id = 6'.

What about this:
SELECT doc.id,doc.title,sub.user_id,sub.operation
  FROM document doc LEFT OUTER JOIN document_subscription sub
  ON sub.document_id = doc.id;

 id | title | user_id | operation
----+-------+---------+-----------
  1 | doc1  |       5 | op1
  2 | doc2  |       5 | op2
  2 | doc2  |       6 | op2
  4 | doc4  |         |
(4 rows)


> 
> here're also simplified definitions of the two tables used in the query
> and some test data:

Thanks for supplying the table and data.  That makes things much 
easier.

-- 
Dan Langille : http://www.langille.org/




view thread (5+ messages)  latest in thread

Message-ID: <3E252C26.23327.2ECB5DE9@localhost>
Permalink:  ../3E252C26.23327.2ECB5DE9@localhost/
Also on:    postgresql.org/message-id/3E252C26.23327.2ECB5DE9@localhost

 · 

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: dan@langille.org, aspa@kronodoc.fi
  Subject: Re: Oracle outer join porting question
  In-Reply-To: <3E252C26.23327.2ECB5DE9@localhost>

* 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