Ver Mensaje Individual
  #4 (permalink)  
Antiguo 16/07/2010, 15:17
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Not unique table/alias:

No puede diferenciar las tablas invocadas. Los alias en el SELECT lo que hacen es simplemente cambiar el encabezado de la columna, pero no afectan el origen del dato, que es la tabla.
Los alias se deben aplicar a las tablas cuando invocas dos veces o más la misma tabla, porque sinó ¿cómo hace para saber de qué invocación debe obtener el dato? Piensa que las tablas se llaman igual...
El tema es simple:
Código MySQL:
Ver original
  1.    J.nombre,  
  2.    descripcion,  
  3.    C.nombre,  
  4.    C1.nombre desarrollador,
  5.    C2.nombre publicador,  
  6.    G.nombre genero,  
  7.    fecha,  
  8.    esrb,  
  9.    caja
  10. FROM  
  11.    gb_juegos J LEFT JOIN  
  12.    gb_consolas C ON J.id_consola = C.id_consola  LEFT JOIN  
  13.    gb_companias C1  ON J.id_desarrollador = C1.nombre LEFT JOIN  
  14.    gb_companias C2 ON J.id_publicador = C2.nombre
  15. WHERE borrado = '0' AND J.id_juego = '$id_juego'
Además, hay dos errores adicionales que aún no han saltado:
1) Estás invocando una tabla gb_generos, la cual aún no existe en el FROM.
2) Estás intentado hacer que el JOIN se realice entre un campo de una tabla con el alias del SELECT de otro campo. Esto está mal. Los campos a indicar en el ON sólo pueden ser los de las tablas físicas invocadas, por sus verdaderos nombres. Los alias en el FROM nunca suplantan nombres de campos. Sólo suplantan nombres de tablas.

Tip final: Los alias indicados en el SELECT tampoco se pueden usar en el WHERE. Ningún DBMS los admite, incluido MySQL. Sólo puden usarse en algunas cláusulas como GROUP BY, ORDER BY o HAVING, en tanto no sean alias aplicados a funciones de agregación.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)