Podle společnosti Oracle (DocId 2658003.1) k tomu dochází, když jsou splněny tři podmínky:
- Připojení k ANSI
- UNIE/UNIE VŠECHNY
- stejná tabulka se v dotazu objeví více než jednou
"QCSJ_C" se zjevně používá interně, když Oracle transformuje spojení ve stylu ANSI.
EDIT:
Nalezen minimální příklad:
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;
QCSJ_C000000000300000 QCSJ_C000000000300001
X X
Lze to opravit buď pomocí syntaxe spojení bez ANSI:
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy
UNION
SELECT * FROM dual d1, dual d2 WHERE d1.dummy=d2.dummy;
DUMMY DUMMY_1
X X
Nebo nejlépe pomocí názvů sloupců místo *
:
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy
UNION
SELECT d1.dummy, d2.dummy FROM dual d1 JOIN dual d2 ON d1.dummy=d2.dummy;
DUMMY DUMMY_1
X X