Re: Oracle outer join porting question
От | Tambet Matiisen |
---|---|
Тема | Re: Oracle outer join porting question |
Дата | |
Msg-id | 81132473206F3A46A72BD6116E1A06AE3EC030@black.aprote.com обсуждение исходный текст |
Ответ на | Oracle outer join porting question (Marko Asplund <aspa@kronodoc.fi>) |
Ответы |
Re: Oracle outer join porting question
Re: Oracle outer join porting question |
Список | pgsql-sql |
> -----Original Message----- > From: Marko Asplund [mailto:aspa@kronodoc.fi] > Sent: Wednesday, January 15, 2003 4:31 PM > To: pgsql-sql@postgresql.org > 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
В списке pgsql-sql по дате отправления: