Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ORDER BY UND WHERE bei virtuellen Spalten (https://www.delphipraxis.net/96969-order-und-where-bei-virtuellen-spalten.html)

HolgerCW 2. Aug 2007 11:51

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:
SELECT (Spalte_A * Spalte_B) AS SUPERSPALTE
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'

Warum ist das so ? und kann man da was machen, ausser WHERE (Spalte_A * Spalte_B) IS NULL hinzuschreiben ?

Gruss

Holger

mkinzler 2. Aug 2007 11:53

Re: ORDER BY UND WHERE bei virtuellen Spalten
 
Weil die where-Auswertung vor der Erzeugung der virtuellen Spalten erfolgt.

HolgerCW 2. Aug 2007 12:10

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

MrSpock 2. Aug 2007 12:18

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

hoika 2. Aug 2007 12:27

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

HolgerCW 2. Aug 2007 12:55

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:

where (Spalte_A is null) or (Spalte_B is null)
Verstehe jetzt nicht ganz, was Du mir damit sagen willst ?

Gruss

Holger

mkinzler 2. Aug 2007 13:00

Re: ORDER BY UND WHERE bei virtuellen Spalten
 
Zitat:

Verstehe jetzt nicht ganz, was Du mir damit sagen willst ?
Bezieht sich speziell auf deinen Abfrage

Null * irgendwas = Null

daddy 2. Aug 2007 15:18

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:
SELECT (Spalte_A * Spalte_B) AS SUPERSPALTE, ... (weitere Spalten) FROM tabelle ORDER BY 1
Gibt es eine vergleichbare Möglichkeit vielleicht auch in ORACLE?

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!

DeddyH 2. Aug 2007 15:24

Re: ORDER BY UND WHERE bei virtuellen Spalten
 
Ehrlich gesagt verstehe ich den tieferen Sinn eines solchen Statements nicht. Pseudo-SQL:
SQL-Code:
SELECT (SpalteA * SpalteB) AS Superspalte
FROM Tabelle
WHERE Superspalte IS NULL
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.

HolgerCW 3. Aug 2007 07:31

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:
SELECT (SpalteA * SpalteB) AS Superspalte
FROM Tabelle
WHERE Superspalte IS NULL
Hier käm die Fehlermeldung: Superspalte ungültiger Feldname und ungültiger Bezeichner

Gruss

Holger


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz