Re: Oracle outer join porting question

From: "Dan Langille" <dan(at)langille(dot)org>
To: Marko Asplund <aspa(at)kronodoc(dot)fi>
Cc: pgsql-sql(at)postgresql(dot)org
Subject: Re: Oracle outer join porting question
Date: 2003-01-15 14:38:46
Message-ID: 3E252C26.23327.2ECB5DE9@localhost
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

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/

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message Tambet Matiisen 2003-01-15 14:40:32 Re: Oracle outer join porting question
Previous Message Marko Asplund 2003-01-15 14:31:02 Oracle outer join porting question