Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/08/2009, 16:58
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: Nombre de las columnas en Mysql

Bueno, el problema es que no puedes poner un literal o un número en una sentencia SELECT, se interpretarán como lo que son.
Por otro lado, el problema lo tienes desde el inicio: Nunca, repito, NUNCA, por protocolo y estándar una columna de una tabla, o una tabla llevan por nombre un valor numérico. Esto es válido tanto para el SQL como para cualquier lenguaje de programación.
No es una regla escrita simplemente porque se trata de algo que siempre existió, desde los inicios, y todos los desarrolladores lo saben.
De hecho, si intentas crear en consola una tabla con números por nombre de columnas, bases o tablas, verás que da error de sintaxis. Si lo has podido hacer es porque has debido usar alguna interfase para crear la tabla. En las interfases, para crear una tabla, estas envían al DBMS la sentencia con algunas transformaciones para resolver problemas de compatibilidad. Una de esas transformaciones es la que resolverá tu problema: Los nombres de campos, tablas y bases se encierran entre acentos agudos (`), para permitir el uso de palabras reservadas, o caracteres no alfanuméricos en los nombres.
Entonces, para poder acceder a los valores, deberás hacer lo mismo:
Código SQL:
Ver original
  1. SELECT `0`, `1`, `2`
  2. FROM tabla;
Y cada vez que invoques esos campos, deberás hacer lo mismo:
Código SQL:
Ver original
  1. SELECT `0`, `1`, `2`
  2. FROM tabla
  3. WHERE `1`= valor;

Sugerencia final: Atente a las reglas de programación, y si quieres numerar los campos, ponles un caracter alfabético al inicio, como se hace en todos los lenguajes de programació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)