2016-05-16 4 views
-3

Ich bin zwei Ansichten beitreten. Wenn ich einen inneren Join verwende, erhalte ich einen ORACLE-Fehler: Ungültige Nummer. Wenn ich linker Join oder rechts Join benutze, erhalte ich keinen Fehler.Oracle: Innerer Join gibt ungültige Zahl Fehler, während linker Join Zeilen erfolgreich zurückgibt

+2

Bitte senden Sie einige Code, einige Daten, Tabellenstruktur ... – Aleksej

+0

Die Tabelle hat rund 2 Millionen Datensätze. Der Schlüssel, den ich verwende, ist vom Typ NUMBER (10) – Siddhesh

+0

Bitte klären Sie Ihr spezifisches Problem oder fügen Sie zusätzliche Details hinzu, um genau zu markieren, was Sie brauchen. Wie es derzeit geschrieben wird, ist es schwer zu sagen, was genau Sie fragen. –

Antwort

1

Der Grund, warum Sie es mit dem inneren Join aber nicht dem äußeren bekommen, ist, weil sich die Ausführung paln ändert. Das "schlechte" Datenelement ist möglicherweise nicht einmal in Ihrer Ergebnismenge, aber um Ihre Daten zu finden, muss es mit einem Plan gelesen werden und mit dem anderen nicht.

Das Finden der Problemaufzeichnung ist möglicherweise nicht einfach. Suchen Sie zunächst in Ihren Ansichtsdefinitionen nach Joins mit unterschiedlichen Datentypen und expliziten Datentypkonvertierungen. Wenn Sie sie finden - verwenden Sie eine Konvertierungsfunktion und erzwingen Sie den vollständigen Scan mit ORDER BY. Sobald Sie die Problemtabelle identifiziert haben, verwenden Sie Filter, um den Bereich zu verkleinern, bis Sie den Problemdatensatz auf Null setzen.