Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
Home -> Community -> Usenet -> c.d.o.misc -> self outer join problem: please assist
Hey there,
I am trying to do a self join to some table with a number of extra conditions on the second iteration of the self join. To better phrase the question I am posting an example (with tables and data) of what I would like to get as a result, my current (incorrect) query, and its result. This on Oracle 8i.
What I would like to see returned:
ACCT SA_TWO LOOKUP_ONE ACCT_JOIN2 LOOKUP_ONE_JOIN2 1 P LARRY_NC 1 BOB_C 2 P JUDY_NC 2 BOB_C 2 P JUDY_NC 2 GRACIE_C 3 P FRANK_NC NULL NULL 4 P JUDY_NC 4 GRACIE_C 5 P FRANK_NC NULL NULL
Here is my current query:
select a1.ACCT, a1.SA_TWO, a1.LOOKUP_ONE, a2.ACCT, a2.LOOKUP_ONE
from agreement a1, agreement a2, account acct, myfeature mf, lookup l
and a1.sa_two = 'P' and a1.acct = a2.acct(+) and a2.lookup_one = l.lookup_one
This is what this current incorrect query returns:
ACCT SA_TWO LOOKUP_ONE ACCT_1 LOOKUP_ONE_1 1 P LARRY_NC 1 BOB_C 1 P LARRY_NC 1 BOB_C 2 P JUDY_NC 2 BOB_C 2 P JUDY_NC 2 BOB_C 2 P JUDY_NC 2 GRACIE_C 4 P JUDY_NC 4 GRACIE_C
What the heck am I doing wrong? Tables to go with the example.
CREATE TABLE AGREEMENT(
ACCT INT, SA_TWO CHAR(1), LOOKUP_ONE CHAR(10) ); CREATE TABLE LOOKUP( LOOKUP_ONE CHAR(10), FEATURE_ID INT ); CREATE TABLE ACCOUNT( ACCT INT ); CREATE TABLE MYFEATURE( FEATURE_ID INT, FEATURE_MARKET INT, DESCRIPTION CHAR(10) );
INSERT INTO ACCOUNT ( ACCT ) VALUES (
1);
INSERT INTO ACCOUNT ( ACCT ) VALUES (
2);
INSERT INTO ACCOUNT ( ACCT ) VALUES (
3);
INSERT INTO ACCOUNT ( ACCT ) VALUES (
4);
INSERT INTO ACCOUNT ( ACCT ) VALUES (
5);
commit;
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
1, 'P', 'LARRY_NC');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
1, 'R', 'BOB_C');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
2, 'P', 'JUDY_NC');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
2, 'R', 'BOB_C');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
2, 'R', 'GRACIE_C');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
3, 'P', 'FRANK_NC');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
4, 'P', 'JUDY_NC');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
4, 'R', 'GRACIE_C');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
5, 'P', 'FRANK_NC');
INSERT INTO AGREEMENT ( ACCT, SA_TWO, LOOKUP_ONE ) VALUES (
4, 'R', 'LARRY_NC');
commit;
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'BOB_C', 10);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'BOB_C', 20);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'GRACIE_C', 10);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'LARRY_NC', 30);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'GRACIE_C', 30);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'LARRY_NC', 40);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'BOB_C', 40);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'JUDY_NC', 40);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'JUDY_NC', 30);
INSERT INTO LOOKUP ( LOOKUP_ONE, FEATURE_ID ) VALUES (
'FRANK_NC', 50);
commit;
INSERT INTO MYFEATURE ( FEATURE_ID, FEATURE_MARKET, DESCRIPTION ) VALUES (
10, 200, 'CAR');
INSERT INTO MYFEATURE ( FEATURE_ID, FEATURE_MARKET, DESCRIPTION ) VALUES (
20, 300, 'CAR');
INSERT INTO MYFEATURE ( FEATURE_ID, FEATURE_MARKET, DESCRIPTION ) VALUES (
30, 200, 'BUS');
INSERT INTO MYFEATURE ( FEATURE_ID, FEATURE_MARKET, DESCRIPTION ) VALUES (
40, 200, 'TRAM');
INSERT INTO MYFEATURE ( FEATURE_ID, FEATURE_MARKET, DESCRIPTION ) VALUES (
50, 200, 'TRUCK');
commit;
Received on Thu Jan 16 2003 - 14:23:20 CST