Voici un autre exemple qui ne peut pas être réécrite sans alias (ne peut pas GROUP BY DISTINCT
).
Imaginez une table appelée purchases
qui enregistre les achats effectués par customers
à stores
, à savoir qu'il est un de plusieurs à plusieurs table et le logiciel a besoin de savoir que les clients ont effectué des achats à plus d'un magasin:
SELECT DISTINCT customer_id, SUM(1)
FROM (SELECT DISTINCT customer_id, store_id FROM purchases)
GROUP BY customer_id HAVING 1 < SUM(1);
. .pas rompre avec l'erreur Every derived table must have its own alias
. Pour corriger:
SELECT DISTINCT customer_id, SUM(1)
FROM (SELECT DISTINCT customer_id, store_id FROM purchases) AS custom
GROUP BY customer_id HAVING 1 < SUM(1);
(Notez les AS custom
alias).
Ne pourriez-vous pas simplement simplifier cela comme "sélectionner l'ID de TT2"? – DMKing
J'ai récemment eu cette erreur parce que j'avais un ')' supplémentaire dans une requête avec beaucoup de 'UNION ALL's. – mpen
Voyant comme ceci est la recherche n ° 1 de Google ... La réponse acceptée ne répond pas vraiment à l'erreur "Chaque table dérivée doit avoir son propre alias". Regardez ci-dessous pour plus d'informations. –