Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Nur mit Alias#1054 - Unbekanntes Tabellenfeld

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von seballa, 23 April 2020.

  1. seballa

    seballa Neuer Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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.
     
    seballa gefällt das.
  3. castorp

    castorp Datenbank-Guru

    Warum stellst Du eine MySQL Frage im Microsoft SQL Server Forum?
     
    seballa gefällt das.
  4. akretschmer

    akretschmer Datenbank-Guru

    argh, ich hab das so interpretiert, daß er MySQL kennt, nun aber mit M$SQL hantiert ...
     
  5. seballa

    seballa Neuer Benutzer

    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
     
  6. seballa

    seballa Neuer Benutzer

    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
     

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden