> -----Original Message-----
> From: Marko Asplund [mailto:[EMAIL PROTECTED]]
> Sent: Wednesday, January 15, 2003 4:31 PM
> To: [EMAIL PROTECTED]
> Subject: [SQL] Oracle outer join porting question
> 
> 
> 
> 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'.
> 

Try 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 AND sub.user_id = 6; 

  Tambet

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
subscribe-nomail command to [EMAIL PROTECTED] so that your
message can get through to the mailing list cleanly

Reply via email to