Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
SQL, Nombres De Campo
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje SQL, Nombres De Campo 
 
A veces creo que soy friki de más. Envío mensajes a la lista de gambas que nadie contesta y uno se pregunta ¿Es que a nadie le pasa lo que a mí?¿Es que soy tan tonto que las preguntas son tan obvias que las dan por contestadas?¿O es que soy tan friki que hago lo que nadie hace?

No sé, pero os traslado aquí la última pregunta que subí a la lista a ver si alguno puede darme una pista:

Cuando hago una consulta a la base de datos usando el método .exec de la conexión, a veces me responde poniendo a los nombres de los campos del resultfield el nombre del campo, como debe ser, o a veces me responde asignando al resultfield el formato nombre_de_tabla.nombre_de_campo.
Siempre he creído que esa referencia jerárquica de tabla.campo se utilizaba para "desambiguar" (toma palabrota) los campos cuando hay posibilidad de confusión, es decir si hago una consulta relacionando a dos tablas y las dos tienen un campo que se llama "fecha", pues añadiendo el nombre de la tabla delante, todo arreglado. Pero no es así.
En estos días estoy trasteando mucho con unos controles propios que manejan consultas y ordenaciones etc y esto me está crispando los nervios. Voy a tener que cambiar todas las rutinas para guiarme por el número de orden del campo en el Result.Fields en lugar de por el nombre, como me decía la razón.

¿A alguien le ha pasado esto? ¿Alguien sabe cómo conseguir que te devuelvan o siempre el nombre de campo sólo o siempre el tabla.campo, pero no "aleatoriamente"?
 Venga, que a veces se siente uno muy solo frente a la pantallica....
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: SQL, Nombres De Campo 
 
Shordi:
Citar:

Voy a tener que cambiar todas las rutinas para guiarme por el número de orden del campo en el Result.Fields en lugar de por el nombre, como me decía la razón

Que extraño, ¿y si usas sentecias de sql con alias?

Osea
Select tabla1.id as "IdT1", tabla2.id as "IdT2" from tabla1, tabla2

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: SQL, Nombres De Campo 
 
Citar:
que extraño, ¿y si usas sentecias de sql con alias?


Sí y la respuesta es entonces o el alias o tabla.alias indiscriminadamente.

Sin embargo con phpmyadmin funciona perfectamente...
 



 
última edición por shordi el Martes, 14 Octobre 2014, 09:35; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: SQL, Nombres De Campo 
 
Me autorespondo: Utilizando el gestor de base de datos de gambas, es decir, creando una conexión almacenada y repitiendo las consultas, veo que siempre añade el nombre de tabla, salvo cuando se usan funciones de mysql (concat, date_format, etc.)
Eso me da una pista, pero antes no era así. Aunque no me contesten y, supongo, perjuren que siempre ha sido así, a mí me ha empezado a fallar ahora...

Modificaré los controles según eso y ya veremos si no me cuelgan por los pies los clientes...
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: SQL, Nombres De Campo 
 
Me vuelvo a responder: Si sólo mencionas campos, devuelve sólo los nombres de campos, si mencionas alguna función de mysql entre la lista de campos, aunque le pongas un alias, entonces añade el nombre de la tabla.

Esto es un lío de cojones. Con eso no hay manera de hacer una rutina que procese bien las consultas sql.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: SQL, Nombres De Campo 
 
Benoit me lo da como el comportamiento esperado, sin serlo. Sostiene lo que yo creía, que el nombre de tabla se añade cuando hay varias tablas en la consulta para la desambiguación, pero "El problema es que no siempre es necesario".
Con eso y un bizcocho hasta mañana a las ocho.

Saludos.
 



 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: SQL, Nombres De Campo 
 
Hola Shordi, a lo mejor digo una tontería, pero se me ocurre que haciendo un pequeño esfuerzo a lo bruto, yo pondría una función que hiciera un split al resultado dividiendo la cadena por el punto (.).  Si esa la salida del split.count  tiene uno es el campo y si tiene 2 el primero es la tabla y el segundo el campo. Por tanto, si quieres solo el campo la función te ha de devolver el elemento String[].count - 1.

Vuelvo a decir que solo es una idea, no lo he probado pero uso mucho esa técnica en los Tag de TextBox para representar los campos  y soluciona.

Un saludo amigos.....

Antonio
 



 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: SQL, Nombres De Campo 
 
ahtonio:

Evidentemente eso funcionaría... (si no hay puntos en los nombres de campo, etc. etc.), pero para lo que yo quería no me valía.

El tema es que construía un Gridview, en el que cada columna es un campo de la consulta y el título de la columna es el nombre del campo tal como estaba definido en la consulta, es decir:

Si yo baso el gridview en esta consulta:

Select nombre as "Nombre", dni as "D.N.I." from personas


el Gridview tendrá la columna "Nombre" y la columna "D.N.I.", pero el result que produce esa consulta tendrá el campo `personas`.`Nombre` y `personas`.`D.N.I.`, lo cual es un follón a la hora de ordenarlas.

Peor aún, si la consulta es

Select trim(nombre) as `Nombre`, dni as `D.N.I.` from personas


el result tendrá el campo `Nombre` (sin el nombre de la tabla) y el campo `personas`.`D.N.I.` (con el nombre de la tabla), lo que lo hace aún más enrevesado.

¿Solución? basar el tema en la posición que ocupa cada columna y no en el nombre.... Un follón, vamos.

Saludos.
 



 
última edición por shordi el Martes, 28 Octobre 2014, 12:32; editado 1 vez 
shordi - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Accediendo A Los Nombres De Campos shordi Bases de Datos 1 Miercoles, 08 Febrero 2012, 19:20 Ver último mensaje
jguardon
No hay nuevos mensajes Nombres De Archivos Con Espacios[Solucionado] Sebas General 4 Viernes, 06 Abril 2012, 11:35 Ver último mensaje
jguardon
No hay nuevos mensajes Convencion De Nombres En El Wiki De Gambas... tincho Sobre Gambas-es 8 Jueves, 30 Junio 2016, 00:15 Ver último mensaje
tincho
No hay nuevos mensajes Wikilibro - Convención De Nombres. tincho Sobre Gambas-es 9 Viernes, 07 Octobre 2016, 13:55 Ver último mensaje
tincho
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron