AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi ORDER BY UND WHERE bei virtuellen Spalten
Thema durchsuchen
Ansicht
Themen-Optionen

ORDER BY UND WHERE bei virtuellen Spalten

Ein Thema von HolgerCW · begonnen am 2. Aug 2007 · letzter Beitrag vom 3. Aug 2007
Antwort Antwort
Seite 1 von 2  1 2      
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 11:51
Datenbank: ORACLE • Version: 9 • Zugriff über: DATABASE
Hallo zusammen,

ich habe in einem Select eine Spalte aus mehreren Spalten erzeugt.

Z.b. so:

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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 11:53
Weil die where-Auswertung vor der Erzeugung der virtuellen Spalten erfolgt.
Markus Kinzler
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 12:10
Alles klar,

kann man da was machen, das ich durch irgendeine andere Möglichkeit, die virtuelle Spalte vorher erzeigen lasse ?

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von MrSpock
MrSpock
(Co-Admin)

Registriert seit: 7. Jun 2002
Ort: Owingen
5.865 Beiträge
 
Delphi 2010 Professional
 
#4

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 12:18
Hallo,

ich weiß nicht, ob Oracle das unterstützt, aber manche SQL Dialekte erlauben ein ORDER BY <spaltennummer> also z.B.:

SELECT (Spalte_A * Spalte_B) AS SUPERSPALTE FROM xxx ORDER BY 1
Albert
Live long and prosper


MrSpock
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 12:27
Hallo,

where (Spalte_A is null) or (Spalte_B is null)

Das muesste ein or sein oder ?



Heiko
Heiko
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#6

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 12:55
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 13:00
Zitat:
Verstehe jetzt nicht ganz, was Du mir damit sagen willst ?
Bezieht sich speziell auf deinen Abfrage

Null * irgendwas = Null
Markus Kinzler
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
124 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 15:18
In Firebird gäbe es folgende Möglichkeit, mit der man quasi die Position der Sortierspalte innerhalb der Select-Klausel benennt:
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!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.537 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 2. Aug 2007, 15:24
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.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#10

Re: ORDER BY UND WHERE bei virtuellen Spalten

  Alt 3. Aug 2007, 07:31
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
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