From: | Marko Asplund <aspa(at)kronodoc(dot)fi> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Oracle outer join porting question |
Date: | 2003-01-15 14:31:02 |
Message-ID: | Pine.LNX.4.44.0301151619570.17243-100000@gamay.kronodoc.fi |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
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'.
here're also simplified definitions of the two tables used in the query
and some test data:
CREATE TABLE document (
id INTEGER,
title VARCHAR(100),
PRIMARY KEY(id)
);
CREATE TABLE document_subscription (
document_id INTEGER NOT NULL,
user_id INTEGER NOT NULL,
operation VARCHAR(10)
);
INSERT INTO document VALUES (1, 'doc1');
INSERT INTO document VALUES (2, 'doc2');
INSERT INTO document VALUES (4, 'doc4');
INSERT INTO document_subscription VALUES (1, 5, 'op1');
INSERT INTO document_subscription VALUES (2, 5, 'op2');
INSERT INTO document_subscription VALUES (2, 6, 'op2');
best regards,
--
aspa http://www.kronodoc.fi/
From | Date | Subject | |
---|---|---|---|
Next Message | Dan Langille | 2003-01-15 14:38:46 | Re: Oracle outer join porting question |
Previous Message | sector119 | 2003-01-15 13:58:17 | sort by relevance |