OUTER Join Problems
Posted in 1993
I have some problems with generating Views containing OUTER JOINs.
The situation can easily be described by:
CREATE TABLE A (
A_ID SERIAL,
A_TEXT CHARACTER (10),
B_ID INTEGER
);
CREATE TABLE B (
B_ID SERIAL,
B_TEXT CHARACTER (10),
C_ID INTEGER NOT NULL
);
CREATE TABLE C (
C_ID SERIAL,
C_TEXT CHARACTER (10)
);
So the References are A.B_ID References B.B_ID (optional)
B.C_ID references C.C_ID (non optional)
I would like to create a view that now lists me all A_TEXT items and if available
the according B_TEXT and C_TEXT items.
CREATE VIEW A_viewAS SELECT
A_TEXT,
B_TEXT,
C_TEXT
FROM
A,
OUTER B,
C
WHERE
A.B_ID = B.B_ID
AND B.C_ID = C.C_ID;
I inserted into the tables:
Table A Table B Table C
A_ID A_TEXT B_ID ! B_ID B_TEXT C_ID ! C_ID C_TEXT
-------------------- ------------------ --------------
1 ATEXT1 4 1 BTEXT1 3 1 CTEXT1
2 ATEXT2 3 2 BTEXT2 2 2 CTEXT2
3 ATEXT3 3 BTEXT3 2 3 CTEXT3
4 BTEXT4 1 4 CTEXT4
Then did a SELECT * from A_view.
I expected to get :
A_TEXT B_TEXT C_TEXT
----------------------
ATEXT1 BTEXT4 CTEXT1
ATEXT2 BTEXT3 CTEXT2
ATETX3
But I got :
A_TEXT BTEXT C_TEXT
----------------------
ATEXT1 BTEXT4 CTEXT1
ATEXT2 CTEXT1
ATEXT3 CTEXT1
ATEXT1 CTEXT2
ATEXT2 BTEXT3 CTEXT2
ATEXT3 CTEXT2
ATEXT1 CTEXT3
ATEXT2 CTEXT3
ATEXT3 CTEXT3
ATEXT1 CTEXT4
ATEXT2 CTEXT4
ATEXT3 CTEXT4
The Result was not what I expected !
So, could anyone tell me how to get the "correct" result.
Is it not possible to do any foreign key expansion from a table that is
already joined via an OUTER join?
The problem does not depend on using a VIEW ! It also occurs when directly
Selecting!
Thanks for any help in this direction !
Achim
--
==========================================================================
/ Achim Reiners Software Engineering \\
| /M/A/I Deutschland GmbH |
| Softwarezentrum Koeln Phone: +49 221 956400-40 |
| Mathias-Brueggen-Str. 85 Fax: +49 221 956400-69 |
\\ 50829 Koeln E-Mail: ar@mai.de /
\\_________________________________________________________________________/