Falsche ORA-01427: single-row subquery mehr als eine Zeile

Ich bin immer der Fehler [ORA-01427: single-row subquery mehr als eine Zeile] wenn ich eine Abfrage ausführen. Ich habe eine Abfrage von strukturierten, zum Beispiel so:

SELECT LV.PRICE,
 (SELECT C.MODEL_NAME FROM CARS C WHERE C.MODEL_ID = LV.MODEL_ID) as MODEL_NAME
FROM LEDGER_VIEW LV
WHERE LV.PRICE < 500

Es bricht auf der geschachtelte select. Ich weiß, die Logik, die beide in der Ansicht und in dieser Abfrage ist korrekt, und dass es keine chance gibt die geschachtelte select zurückgeben, die mehr als eine Zeile. Die AUTOS Tabelle MODEL_ID ist ein einzigartiges Feld. Wenn ich die Abfrage ausführen, ohne die verschachtelten wählen Sie es nicht wieder dieser Fehler.

Den LEDGER_VIEW ist eine Ansicht gebaut, die auf eine andere Ansicht. Ist es möglich, dass diese gestapelt Ansichten sind buggy in Oracle 10g? Ich weiß nicht, wie sonst zu Debuggen dieses Problems.

Ich bin mir bewusst, ändern könnte ich diese bestimmte Abfrage eine Verknüpfung anstatt einer geschachtelten select -, aber ich würde gerne wissen, warum dies passiert ist, weil ich verschachtelte Abfragen in anderen Orten, wo es nicht so leicht veränderbar.

BEARBEITEN: Hier ist die wirklich seltsame Sache. Die LEDGER_VIEW ist, wie ich schon sagte, erbaut auf der Spitze einer anderen Ansicht. Als test habe ich kopiert die geschachtelte Ansicht SQL direkt in die SQL der SQL LEDGER_VIEW, an die Stelle der Strukturansicht aus, und es kam mit keine Fehler (wie erwartet). Dies scheint mir bestätigen, dass es einige buggy Verhalten entweder mit geschachtelten sichten oder mit der Kombination von geschachtelten sichten + Datenbank-links.

  • Wenn Sie sagen, "MODEL_ID ist einzigartig Feld", gibt es einen Primärschlüssel oder einen eindeutigen index, um es zu überprüfen?
  • ja, es ist der Primärschlüssel in der Tabelle für AUTOS.
  • Könnte das problem sein, in LEDGER_VIEW selbst?
InformationsquelleAutor aw crud | 2010-09-27
Schreibe einen Kommentar