![]() |
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
ORDER BY UND WHERE bei virtuellen Spalten
Hallo zusammen,
ich habe in einem Select eine Spalte aus mehreren Spalten erzeugt. Z.b. so:
Delphi-Quellcode:
Wenn ich jetzt ORDER BY SUPERSPALTE mache, klappt das, bei WHERE SUPERSPALTE IS NULL kommt die Fehlermeldung 'SUPERSPALTE ungültiger Feldname und ungültiger Bezeichner'
SELECT (Spalte_A * Spalte_B) AS SUPERSPALTE
Warum ist das so ? und kann man da was machen, ausser WHERE (Spalte_A * Spalte_B) IS NULL hinzuschreiben ? Gruss Holger |
Re: ORDER BY UND WHERE bei virtuellen Spalten
Weil die where-Auswertung vor der Erzeugung der virtuellen Spalten erfolgt.
|
Re: ORDER BY UND WHERE bei virtuellen Spalten
Alles klar,
kann man da was machen, das ich durch irgendeine andere Möglichkeit, die virtuelle Spalte vorher erzeigen lasse ? Gruss Holger |
Re: ORDER BY UND WHERE bei virtuellen Spalten
Hallo,
ich weiß nicht, ob Oracle das unterstützt, aber manche SQL Dialekte erlauben ein ORDER BY <spaltennummer> also z.B.:
SQL-Code:
SELECT (Spalte_A * Spalte_B) AS SUPERSPALTE FROM xxx ORDER BY 1
|
Re: ORDER BY UND WHERE bei virtuellen Spalten
Hallo,
where (Spalte_A is null) or (Spalte_B is null) Das muesste ein or sein oder ? Heiko |
Re: ORDER BY UND WHERE bei virtuellen Spalten
Hallo,
mit dem ORDER BY klappt das ja. Es geht mir um das WHERE. Klappt das bei dem WHERE auch mit der Spaltennummer ? Zitat:
Gruss Holger |
Re: ORDER BY UND WHERE bei virtuellen Spalten
Zitat:
Null * irgendwas = Null |
Re: ORDER BY UND WHERE bei virtuellen Spalten
In Firebird gäbe es folgende Möglichkeit, mit der man quasi die Position der Sortierspalte innerhalb der Select-Klausel benennt:
SQL-Code:
Gibt es eine vergleichbare Möglichkeit vielleicht auch in ORACLE?
SELECT (Spalte_A * Spalte_B) AS SUPERSPALTE, ... (weitere Spalten) FROM tabelle ORDER BY 1
Gruß, Daddy Edit: Sorry!!! Es geht ja schon lange nicht mehr um das "ORDER BY" außerdem wurde "order by <Spaltennummer>" auch schon in #4 erwähnt. War hier nicht ganz bei der Sache! |
Re: ORDER BY UND WHERE bei virtuellen Spalten
Ehrlich gesagt verstehe ich den tieferen Sinn eines solchen Statements nicht. Pseudo-SQL:
SQL-Code:
Wozu erst multiplizieren, wenn am Ende doch NULL herauskommen soll? Und NULL kommt dann heraus, wenn mindestens eine Spalte NULL ist, von daher hat Heiko schon ganz Recht.
SELECT (SpalteA * SpalteB) AS Superspalte
FROM Tabelle WHERE Superspalte IS NULL |
Re: ORDER BY UND WHERE bei virtuellen Spalten
Das war ja jetzt nur ein Beispiel.
Es ging eigentlich darum, das ich die Spalte 'SUPERSPALTE' nicht in der WHERE - Klausel benutzen kann. Dein Code wird also nicht funktionieren:
Delphi-Quellcode:
Hier käm die Fehlermeldung: Superspalte ungültiger Feldname und ungültiger Bezeichner
SELECT (SpalteA * SpalteB) AS Superspalte
FROM Tabelle WHERE Superspalte IS NULL Gruss Holger |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz