Saltar al contenido

¿Cuál es el error “Cada tabla derivada debe tener su propio alias” en MySQL?

Esta es la contestación más acertada que encomtrarás dar, pero mírala detenidamente y analiza si se adapta a tu trabajo.

Solución:

Cada tabla derivada (también conocida como subconsulta) debe tener un alias. Es decir, a cada consulta entre paréntesis se le debe dar un alias (AS whatever), que se puede usar para hacer referencia a él en el resto de la consulta externa.

SELECT ID FROM (
    SELECT ID, msisdn FROM (
        SELECT * FROM TT2
    ) AS T
) AS T

En su caso, por supuesto, la consulta completa podría reemplazarse con:

SELECT ID FROM TT2

Creo que te está pidiendo que hagas esto:

SELECT ID
FROM (SELECT ID,
             msisdn 
      FROM (SELECT * FROM TT2) as myalias
     ) as anotheralias;

Pero, ¿por qué escribirías esta consulta en primer lugar?

Aquí hay un ejemplo diferente que no se puede reescribir sin alias (can’t GROUP BY DISTINCT).

Imagina una mesa llamada purchases que registra las compras realizadas por customers a storeses decir, es una tabla de muchos a muchos y el software necesita saber qué clientes han realizado compras en más de una tienda:

SELECT DISTINCT customer_id, SUM(1)
  FROM ( SELECT DISTINCT customer_id, store_id FROM purchases)
  GROUP BY customer_id HAVING 1 < SUM(1);

..se romperá con el error Every derived table must have its own alias. Arreglar:

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);

( Nota la AS custom alias).

Te invitamos a avalar nuestro trabajo añadiendo un comentario o dejando una valoración te damos las gracias.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *