Bislang haben wir in unseren Abfragen immer genau eine Tabelle angesprochen. Das wird sich in dieser Lektion ändern. Denn durch die Kombination von Tabellen werden Dinge möglich, die über eine einfache Tabellenkalkulation wie Excel hinaus gehen.
Tabellennamen und -alias
Da jetzt Spalten aus mehr als einer Tabelle vorkommen können, sind die Spaltennamen nicht immer eindeutig. Deshalb kann es nötig sein, die Tabellen zu erwähnen, wenn wir uns auf die Spalten beziehen, beispielsweise in der Feldliste oder in der WHERE-Klausel.
Mehrdeutige Spaltennamen
SELECT id, firstname FROM tasks INNER JOIN users ON assignee = id
In diesem Beispiel ist der Spaltenname ID nicht eindeutig, da er in beiden Tabellen vorkommt. Entsprechend kommt es zu einer Fehlermeldung:
“column ambiguously defined: ID: line 5 col 17 (at pos 81)”
Spaltennamen mit Tabellennamen
SELECT tasks.id users.firstname FROM tasks INNER JOIN users ON tasks.assignee = users.id
In diesem Fall sind die Spaltennamen eindeutig, da stets der Tabellenname mit angegeben wurde. Das ist aber häufig viel Schreibarbeit und wenig flexibel.
Falls eine Tabelle mehrfach vorkommt, dann funktioniert das so auch nicht mehr.
Spaltennamen mit Tabellenalias
SELECT t.id u.firstname FROM tasks AS t INNER JOIN users AS u ON t.assignee = u.id
Wenn wir für die Tabelle mit AS einen Alias definieren, dann können wir uns bei Spaltenzugriffen darauf beziehen.
Es wird empfohlen, immer Aliasnamen zu vergeben. Darüber kann auch die Rolle der Tabelle in dieser Abfrage näher definiert werden. Wenn beispielsweise eine Tabelle USERS in einer Abfrage einmal für Projektleiter und einmal für Bearbeiter (ASSIGNEE) verwendet wird, kann man die entsprechende Aliasnamen wählen.
Spaltenalias vergeben mit AS
Mit dem Schlüsselwort AS nach einer Spalte kann man diese umbenennen. Wenn beispielsweise die ID aus mehreren Tabellen wie z.B. TASKS und USERS kommt, dann kann man den Namen entsprechend anpassen.
SELECt t.id AS task_id, u.id AS user_id FROM tasks AS t LEFT OUTER JOIN users AS u ON t.assignee = u.id