On a 12.2 database I played a bit around with alias names for tables....
-- Does not work, as expected
SELECT *
FROM Dual d1
INNER JOIN Dual d1 ON d1.Dummy = d1.Dummy
;
--Works...
SELECT *
FROM Dual d1
INNER JOIN Dual d1 ON d1.Dummy = d1.Dummy
INNER JOIN Dual d1 ON d1.Dummy = d1.Dummy
;
-- Does not work, as expected
SELECT d1.Dummy
FROM Dual d1
INNER JOIN Dual d1 ON d1.Dummy = d1.Dummy
INNER JOIN Dual d1 ON d1.Dummy = d1.Dummy
;
-- Does not work, as expected
SELECT *
FROM Dual d1
INNER JOIN Dual d1 ON d1.Dummy = d1.Dummy
INNER JOIN Dual d1 ON d1.Dummy = d1.Dummy
WHERE d1.Dummy IS NULL
;
-- Works....
SELECT *
FROM Dual d1
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
;
-- Works....
SELECT d2.Dummy
FROM Dual d1
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
;
-- Works....
SELECT d2.Dummy
FROM Dual d1
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
WHERE d2.DUMMY ='X'
;
-- Works....
SELECT d2.Dummy
FROM Dual d1
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
INNER JOIN Dual d2 ON d1.Dummy = d2.Dummy
WHERE d2.DUMMY ='X'
;