Nur mit Alias#1054 - Unbekanntes Tabellenfeld

seballa

Neuer Benutzer
Beiträge
3
Hallo ich bin dabei mir meine vor langer Zeit erworbenen MYSQL Kenntnisse aufzufrischen. Ich bin auf ein kleines Problem gestoßen, das mich etwas ratlos macht. Ich bekomme mit folgender Query einen Fehler (#1054 - Unbekanntes Tabellenfeld 'brutto' in field list):
Code:
SELECT
   `Wein`.`EVPreisbrutto` AS `brutto`,
(CASE WHEN(`brutto` > 33)
   THEN 1
   ELSE 2
   END) AS `Empfehlung`
       FROM
           `weinkeller`.`Wein` `Wein` LIMIT 0, 25
Während die gleiche Abfrage ohne Alias funktioniert:
Code:
SELECT
   `Wein`.`EVPreisbrutto` 
(CASE WHEN(`EVPreisbrutto`> 33)
   THEN 1
   ELSE 2
   END) AS `Empfehlung`
       FROM
           `weinkeller`.`Wein` `Wein` LIMIT 0, 25
Warum? Ich wollte die Query etwas formatieren und alle andere Felder mit Alias in der gleichen Tabelle funktionieren. Ich habe die weit größere Abfrage bis auf dieses Segment gekürzt und bekomme immer noch den gleichen Fehler und es läuft sobald ich den Alias weglasse???? Danke für Eure Hilfe
 
Werbung:
yeah. Um das mal vereinfacht zu zeigen:

Code:
test=*# with x as (select 3 as a, 5 as b) select * from x;
 a | b
---+---
 3 | 5
(1 row)

test=*# with x as (select 3 as a, 5 as b) select a+b as c, c+3 from x;
ERROR:  column "c" does not exist
LINE 1: ...ith x as (select 3 as a, 5 as b) select a+b as c, c+3 from x...
                                                             ^
test=*#

Die Diskussion über die Sichtbarkeit des Aliases im selben Level der Abfrage gab und gibt es immer wieder. Es ist aber so per SQL-Spec festgelegt, und (fast) alle DB-Systeme verhalten sich entsprechend. Also, vergebene Aliases sind im selben Level der Abfrage nicht sichtbar, das gilt auch für die Where-Bedingung.

Wissen, was man mit MySQL erworben hat, ist halt nicht viel wert.
 
Warum stellst Du eine MySQL Frage im Microsoft SQL Server Forum?
Oh man sorry, fängt ja gut an, erster Post hier und dann gleich im falschen Forum. Aber trotzdem danke für die Antworten. Einen Alias in einer Unterabfrage zu benutzen geht auch in MySql nicht denke ich. Ich wusste nicht, dass für Funktionen das gleiche gilt. Noch mal Entschuldigung und Danke.

Seballa
 
Werbung:
Ich möchte noch kurz anfügen was für Verwirrung sorgte, ich hatte eine weiter Funktion in meiner Abfrage, in der der Alias funktionierte. Und zwar deshalb, weil er abgesehen von der groß und klein Schreibung identisch war. Im Grund ist der Sinn meiner ganzen Übung dadurch auch erfüllt: Sinn und Zweck einer ordentlichen Namenskonvention erkennen und beim nächsten Mal besser machen.... hilft mir sicherlich auch hier im Forum bei den Unterforen. :-) Grüße
 
Zurück
Oben