SQL Sélection avec alias de table


Exemple

SELECT e.Fname, e.LName 
FROM Employees e

La table Employees reçoit l'alias 'e' directement après le nom de la table. Cela permet d'éliminer l'ambiguïté dans les scénarios où plusieurs tables ont le même nom de champ et vous devez spécifier la table à partir de laquelle vous souhaitez renvoyer des données.

SELECT e.Fname, e.LName, m.Fname AS ManagerFirstName 
FROM Employees e 
    JOIN Managers m ON e.ManagerId = m.Id

Notez qu'une fois que vous avez défini un alias, vous ne pouvez plus utiliser le nom de la table canonique. c'est à dire,

SELECT e.Fname, Employees.LName, m.Fname AS ManagerFirstName 
FROM Employees e 
JOIN Managers m ON e.ManagerId = m.Id

serait jeter une erreur.

Il convient de noter les alias de tables - plus formellement les «variables de plage» - ont été introduits dans le langage SQL pour résoudre le problème des colonnes en double provoquées par INNER JOIN . Le standard SQL de 1992 corrigeait ce défaut de conception en introduisant NATURAL JOIN (implémenté dans mySQL, PostgreSQL et Oracle mais pas encore dans SQL Server), dont le résultat ne comporte jamais de noms de colonnes en double. L'exemple ci-dessus est intéressant en ce sens que les tables sont jointes sur des colonnes avec des noms différents ( Id et ManagerId ) mais ne sont pas supposées être jointes sur les colonnes du même nom ( LName , FName ), nécessitant le changement de nom des colonnes avant l'adhésion:

SELECT Fname, LName, ManagerFirstName 
FROM Employees
     NATURAL JOIN
     ( SELECT Id AS ManagerId, Fname AS ManagerFirstName
       FROM Managers ) m;

Notez que même si une variable alias / range doit être déclarée pour la table dervied (sinon SQL lancera une erreur), il n’est jamais logique de l’utiliser dans la requête.