Si vous obtenez "ERREUR :entrée de la clause FROM manquante pour la table ” dans PostgreSQL lors de l'utilisation d'un opérateur tel que UNION
, INTERSECT
, ou EXCEPT
, cela peut être dû au fait que vous qualifiez un nom de colonne avec son nom de table.
Pour résoudre ce problème, supprimez le nom de la table ou utilisez un alias de colonne.
Exemple d'erreur
Voici un exemple de code qui génère l'erreur :
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY Teachers.TeacherName ASC;
Résultat :
ERROR: missing FROM-clause entry for table "teachers" LINE 4: ORDER BY Teachers.TeacherName ASC;
Dans ce cas, j'ai essayé de classer les résultats par le TeacherName
colonne, mais j'ai qualifié cette colonne avec le nom de la table (j'ai utilisé Teachers.TeacherName
pour référencer le nom de la colonne).
Le référencement de tables comme celle-ci ne fonctionne pas lors de la commande des résultats de UNION
, EXCEPT
, ou INTERSECT
.
Solution 1
Une façon de résoudre ce problème consiste à supprimer le nom de la table du ORDER BY
clause :
(SELECT TeacherName FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY TeacherName ASC;
Solution 2
Une autre façon de résoudre ce problème consiste à utiliser un alias pour la colonne :
(SELECT TeacherName t FROM Teachers)
UNION
(SELECT StudentName FROM Students)
ORDER BY t ASC;
Avec cette option, nous attribuons un alias à la colonne, puis référençons cet alias dans le ORDER BY
clause.