I have a query like this
SQL> SELECT DISTINCT ASAP.SPEC_REL.ITEM_SPEC_ID_DWN
2 FROM ASAP.SPEC_REL
3 WHERE LEVEL >= 0
4 START WITH ASAP.SPEC_REL.ITEM_SPEC_ID_DWN = 1059
5 CONNECT BY PRIOR ASAP.SPEC_REL.ITEM_SPEC_ID_DWN = ASAP.SPEC_REL.ITEM_SPEC_ID_UP AND
6 ASAP.SPEC_REL.ITEM_SPEC_ID_DWN <> ASAP.SPEC_REL.ITEM_SPEC_ID_UP
7 ORDER BY ASAP.SPEC_REL.ITEM_SPEC_ID_DWN DESC;
ORDER BY ASAP.SPEC_REL.ITEM_SPEC_ID_DWN DESC
*
ERROR at line 7:
ORA-00904: "ASAP"."SPEC_REL"."ITEM_SPEC_ID_DWN": invalid identifier
But the column exists in the table
SQL> desc ASAP.SPEC_REL
Name Null? Type
----------------------------------------- -------- ----------------------------
ITEM_SPEC_ID_UP NOT NULL NUMBER(9)
ITEM_SPEC_ID_DWN NOT NULL NUMBER(9)
INCLUDE_NBR_DWN_IND CHAR(1)
LAST_MODIFIED_DATE NOT NULL DATE
LAST_MODIFIED_USERID NOT NULL VARCHAR2(8)
ORDER_OF_ENTRY NUMBER(3)
If i remove the user.table(asap.spec_rel) from the query, it works fine.
SQL> SELECT DISTINCT ITEM_SPEC_ID_DWN
2 FROM ASAP.SPEC_REL
3 WHERE LEVEL >= 0
4 START WITH ITEM_SPEC_ID_DWN = 1001
5 CONNECT BY PRIOR ITEM_SPEC_ID_DWN = ITEM_SPEC_ID_UP AND
6 ITEM_SPEC_ID_DWN <> ITEM_SPEC_ID_UP
7 ORDER BY ITEM_SPEC_ID_DWN DESC;
ITEM_SPEC_ID_DWN
----------------
1008
1001
I find this error occurs only when using connect by clause.
SQL> SELECT DISTINCT ASAP.SPEC_REL.ITEM_SPEC_ID_DWN
2 FROM ASAP.SPEC_REL;
ITEM_SPEC_ID_DWN
----------------
1000
1001
1002
1003
1004
1005
Also this issue occurs only in test database but works fine in development database;
--in development database
SQL> SELECT DISTINCT ASAP.SPEC_REL.ITEM_SPEC_ID_DWN
2 FROM ASAP.SPEC_REL
3 WHERE LEVEL >= 0
4 START WITH ASAP.SPEC_REL.ITEM_SPEC_ID_DWN = 1001
5 CONNECT BY PRIOR ASAP.SPEC_REL.ITEM_SPEC_ID_DWN = ASAP.SPEC_REL.ITEM_SPEC_ID_UP AND
6 ASAP.SPEC_REL.ITEM_SPEC_ID_DWN <> ASAP.SPEC_REL.ITEM_SPEC_ID_UP
7 ORDER BY ASAP.SPEC_REL.ITEM_SPEC_ID_DWN DESC;
ITEM_SPEC_ID_DWN
----------------
1001
Please give me the solution or cause for this situation.