PDA

Vollständige Version anzeigen : SQL ist leicht (2) - Alias


ebs17
18.03.2013, 10:04
SQL ALIAS

Objekte benötigen zur eindeutigen Erkennung und Verarbeitung Namen, so auch Felder (Spalten), Tabellen und (Unter)Abfragen in SQL-Anweisungen. Mit einem Alias kann man einem neu geschaffenen Element (z.B. berechnetes Feld) gezielt einen gewünschten Namen geben, und man kann vorhandene Elemente umbenennen, um verschiedene Wirkungen zu erzielen.
(irgendwas) AS Aliasname

Spaltenalias
Mit einem Spaltenalias kann man Spalten benennen bzw. umbenennen, z.B. um aus kryptischen Tabellenfeldnamen verständliche Feldbezeichner erzeugen, für Exporte Felder umbenennen oder berechneten Feldern zzgl. aggregierten Feldern eine Bezeichnung zuweisen.
SELECT
ma_nname AS Mitarbeiternachname,
ma_std * 23.45 AS Tagesverdienst,
„Vorbild“ AS Bemerkung
FROM
tblMitarbeiter
Spaltenaliase helfen kurz gesagt bei der Organisation der ausgegebenen Daten.

Tabellenalias
Dazu wird ein Alias direkt nach dem Tabellennamen in der FROM-Klausel angegeben und kann dann in den weiteren Abfrageteilen genutzt werden. Als Tabellenalias wird man überwiegend eine Kurzbezeichnung wählen, da er nach außen auch nicht in Erscheinung tritt. Das Schlüsselwort „AS“ kann man weglassen, der Abfrageditor in Access wird es, wenn er wirksam wird, i.d.R. hinzufügen. Ein Tabellenalias kann auch im Abfrageeditor erzeugt werden, wenn man die betreffende Tabelle markiert und das Eigenschaftsblatt öffnet.

Vorteile:

- Übersicht durch Kürze
In der SQL-Anweisung spart man Schreibarbeit, da man Abfrageteile oder ganze Abfragen nicht nur per Assistent erzeugen kann oder wird, sondern durchaus auch per Hand. SQL-Anweisungen werden nicht nur kürzer, sondern auch besser lesbar. Besonders spürbar wird das, wenn sehr lange und ähnliche Tabellennamen vorkommen.
Gegenüberstellung der gleichen Abfrage:
SELECT
tblTabellenfeldnameMitUnterstrich.Feld1,
tblTabellenfeldnameOhneUnterstrich.Feld2,
tblTabellenfeldnameMitUnterstrich.Feld3
FROM
tblTabellenfeldnameMitUnterstrich
INNER JOIN tblTabellenfeldnameOhneUnterstrich
ON tblTabellenfeldnameMitUnterstrich.Schluessel = tblTabellenfeldnameOhneUnterstrich.Schluessel

SELECT
M.Feld1,
O.Feld2,
M.Feld3
FROM
tblTabellenfeldnameMitUnterstrich AS M
INNER JOIN tblTabellenfeldnameOhneUnterstrich AS O
ON M.Schluessel = O.Schluessel
Mit der Aliasvariante hat man einen höheren Änderungskomfort, wenn man z.B. eine Tabellenbezeichnung ändern muss.

- Funktionalität
Wenn man in einer Abfrage eine Unterabfrage erzeugt und diese verwendet, muss sie als "Tabelle" einen Namen bekommen.
Beispiel: In einer Kontakttabelle soll für jeden Kunden der letzte Kontakttermin ermittelt werden. Dabei sollen aber alle Felder des Kontaktes angezeigt werden:
SELECT
K.KundeID,
K.Kontaktdatum,
K.Anlass,
K.BetreuerID
FROM
tblKontakte AS K
INNER JOIN
(
SELECT
KundeID,
Max(Kontaktdatum) AS LetzterKontakt
FROM
tblKontakte
GROUP BY
KundeID
) AS A
ON K.KundeID = A.KundeID
AND
K.Kontaktdatum = A.LetzterKontakt

Bei einer Verknüpfung einer Tabelle mit sich selber (SELF JOIN) muss zur Unterscheidung der Instanzen eine namentliche Unterscheidung vorgenommen werden.
Beispiel: In einer Tabelle mit Zählerständen soll jeweils die Differenz zwischen zwei aufeinanderfolgenden Datensätzen ermittelt werden:
SELECT
T1.Ablesedatum,
T1.Stand - T2.Stand AS Differenz
FROM
tblZaehlerstaende T1
LEFT JOIN tblZaehlerstaende T2
ON T1.ID = T2.ID + 1