Spalte mehrdeutig definiert, die in der Unterabfrage mit rownums

Ich habe zum ausführen einer SQL aus einigen der Benutzer und zeigen Ihre Ergebnisse. Ein Beispiel in SQL könnte dies sein:

SELECT t1.*, t2.* FROM table1 t1, table2 t2, where table1.id = table2.id

Dieses SQL funktioniert gut, wie es ist, aber ich muss manuell hinzufügen Paginierung und zeigen Sie das rownum, also die SQL endet wie dieser.

SELECT z.* 
FROM(       
    SELECT y.*, ROWNUM rn
    FROM (                   
        SELECT t1.*, t2.* FROM table1 t1, table2 t2, where table1.id = table2.id
    ) y      
    WHERE ROWNUM <= 50) z         
WHERE rn > 0

Dies wirft eine Ausnahme: "ORA-00918: Spalte mehrdeutig definiert", weil beide Tabelle1 und Tabelle2 enthält ein Feld mit dem gleichen Namen ("id").

Was könnte der beste Weg, dies zu vermeiden?

Grüße.

  • UPDATE

In der end, wir hatten zu gehen für die häßliche Art und Weise und zu analysieren, jede SQL-kommen, bevor diese ausgeführt werden. Im Grunde haben wir beschlossen, Sternchen zu entdecken, was die Felder, die wir brauchten, um hinzuzufügen, und den alias jedes Feld mit einer eindeutigen id. Das führte zu Leistungseinbußen, sondern unsere Kunden verstanden, es war die einzige option, die angesichts der Anforderungen.

Werde ich mark Lex Antwort als die Lösung wir am Ende der Arbeit auf.

InformationsquelleAutor Damntry | 2011-11-02
Schreibe einen Kommentar