MySQL Alias
Martin Hein
- webserver
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
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
hab's schon gefunden:
ORDER BY 'alias' funktioniert
WHERE 'alias' ist scheinbar nicht erlaubt.
beste gruesse,
martin
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
AStest
FROMcontent\_online\_new
WHEREtest
= '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";