Martin Hein: MySQL Alias

Hallo Forum,

bei mir passiert es immer wieder, dass ich einen Alias nicht in
einer Bedingung verwednen darf. Anderseits habe ich aber das Gefühl,
dass es an anderen Stellen geht. Kann mir jemand sagen, wie ich
auf 'test' in meiner Bedingung zugreifen kann?

SELECT
content\_online\_new.site\_id ,
content\_online\_new.link\_title AS test

FROM content\_online\_new

WHERE test = 'Unsere Leistungen'

danke und

beste gruesse,
martin

  1. Hello,

    Kann mir jemand sagen, wie ich auf 'test' in meiner Bedingung zugreifen kann?

    beim WHERE kann ich dir gerade nicht helfen, bei ORDER kann man es immer mal über den Index probieren:
    ORDER BY 2, 1  -- sortiere erst nach der zweiten, dann nach der ersten Ergebnisspalte.

    MfG
    Rouven

    --
    -------------------
    Eine Bilanz ist wie der Bikini einer Frau. Sie zeigt fast alles, aber verdeckt das Wesentliche  --  Günter Stotz, Regierungsdirektor des baden-württembergischen Wirtschaftsministeriums
    1. hab's schon gefunden:

      ORDER BY 'alias' funktioniert
      WHERE 'alias' ist scheinbar nicht erlaubt.

      beste gruesse,
      martin

  2. echo $begrüßung;

    bei mir passiert es immer wieder, dass ich einen Alias nicht in
    einer Bedingung verwednen darf. Anderseits habe ich aber das Gefühl,
    dass es an anderen Stellen geht.
    SELECT
    content\_online\_new.link\_title AS test
    FROM content\_online\_new
    WHERE test = 'Unsere Leistungen'

    Zuerst wird von einem Statement die FROM-Klausel (inklusive Joins) ausgewertet, um die zu verarbeitenden Tabellen zu ermitteln. Dann werden die Datensätze mit WHERE gefiltert und gegebenenfalls GROUPiert. Erst jetzt können die unter SELECT angegebenen Felder ausgewertet werden, weswegen auch erst jetzt Alias-Namen zur Verfügung stehen. Die können dann in HAVING- und ORDER-Klauseln verwendet werden.
    Wenn du jetzt aber denkst: "Gut, nehm ich halt HAVING und lass WHERE weg", dann geht das vielleicht in MySQL gut, aber nicht unbedingt in anderen DBMS. HAVING hat die Aufgabe von den GROUPierten Datensätzen noch einige wegzufiltern und arbeitet deswegen einerseits (normalerweise) nur mit den unter GROUP BY angegebenen Felder oder Aggregatfunktionen zusammen, andererseits kann es auf keine Optimierungen, wie Indexe, zugreifen.

    echo "$verabschiedung $name";