none
MySql - Buscar nombre de columna RRS feed

  • Pregunta

  • Buenos dias

    Probablemente la forma q elegí hacerlo es la incorrecta

    Tengo una tabla con 24 columnas que tienen la fecha(03-2014 otra 04-2014 otra 05-2014) de los 2 años siguientes, y tb otras columnas

    Declaro una variable que guarda la fecha de hoy y la formateo para que quede igual que el nombre de las columnas(ejem 03-2014)

    My problema es que cuando en visual le doy el comando sql para q busque en la base de datos... no me hace caso

    He probado de estas maneras:

    SELECT lectura_nombre, ('03-2019') from lectura; probado desde mysql directamente devuelve una columna llamada 03-2019, pero esa columna no existe. Y en cada campo coloca 03-2019

    SELECT lectura_nombre, ("03-2019") from lectura; probado desde mysql directamente devuelve una columna llamada 03-2019, pero esa columna no existe. Y en cada campo coloca 03-2019

    SELECT lectura_nombre, enero-2014 from lectura; error, de hecho la columna se llama 01-2014, obvio que da error SELECT lectura_nombre, 03-2019 from lectura; probado desde mysql directamente devuelve una columna llamada 03-2019 y en cada campo coloca -2016 y si cambio la fecha a 03-2014 me da -2011 en cada campo

    SELECT lectura_nombre FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = lectura; error show columns from lectura; en la primer columna del resultado me da el nombre de cada columna de la tabla lectura y en las otras Type, Null, Key

    select * from lectura where column_name = ("lectura_direccion"); error

    SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_SCHEMA LIKE "prueba1" AND TABLE_NAME = "lectura" ; me devuelve solo una columna y en cada renglon todas los nombres de las columnas

    SELECT COLUMN_NAME FROM information_schema.COLUMNS WHERE TABLE_NAME = "lectura" ; lo mismo q en la anterior select * from lectura where lectura.lectura_barrio = "Villa mazini"; todos los renglones en que la columna lectura_barrio tiene "Villa mazini"

    Je, no van a decir q no lo intenté

    La idea es que a la variable _tiempo (Dim _tiempo As Object = Date.Now.ToString("MM-yyyy")) le reste uno, para ir al mes anterior al actual. Y luego busque los nombres de las columnas y cuando coincida, muestre esa columna

    Lo que sí logro hacer, es usar la variable con el insert, ejem

    UPDATE lectura SET fecha_eliminacion = ('" + _tiempo + "') where idusuarios = ('" + Label_id.Text + "')

    Cambiar el diseño de la tabla lo he pensado, pero también filtro por filas porque cada fila es un usuario diferente

    La otra q se me ocurrió era recorrer toda la tabla en la datatable de un datagrid y buscarla en la datatable cuando coincida con la variable _tiempo menos 1. Pero ni idea de cómo hacerlo

    Tal ves yo me enrededé para verlo de este ángulo y tomándolo por otro sea mejor.

    Espero haberme explicado bien Saludos

    martes, 25 de marzo de 2014 6:25

Todas las respuestas

  • Me gustaria poder ayudarte, entiendo que tienes 24 columnas y cada una le has puesto un nombre 03-2014 .....

    si es asi para que te de el resultado de esta columna seria 

    select 03-2014 from lectura y nada mas. Si no he entendido bien la pregunta te ruego me disculpes.

    martes, 25 de marzo de 2014 6:58
  • Qué tal, buenos días. Gracias RamonBCN

    Sí, si hago esa consulta en mysql (el proyecto en visual al ejecutarlo con esa busqueda me da error) me devuelve una columna que se llama 03-2014 con 7 filas (que son la cantidad de filas que tiene la tabla lectura) y en cada campo coloca -2011. Cuando en realidad los campos están nulos. Y si en ves de 03-2014 le pongo que busque la columna 03-2019(columna que no existe en la tabla lectura) me devuelve 7 filas con el nombre de la columna 03-2014 y en cada campo -2016

    Supongo que habría que llamar a la columna de otra forma. Probé con comillas simples, dobles, corchetes. No sé

    Pero lo que devuelve esa consulta que vos me decís, que ya había probado muy similar como puse en los ejemplos, no es un reflejo de mi tabla. Como digo, los campos de esa columna están vacíos

    No lo entiendo bien el por qué.

    Espero puedan darme una mano

    martes, 25 de marzo de 2014 7:38
  • Hola:

    Prueba

    Select [03-2014] From TU_TABLA

    P.D.

    Cuando el nombre de un campo tiene carácter "raro" como puede ser el - ó el espacio, tienes que meter el nombre de campo entre corchetes.

    Solución:

    En vez de poner carácter "raro", pon el guion bajo "_".

    Un saludo desde Bilbo

    Carlos

    martes, 25 de marzo de 2014 8:07
  • Hola J.Carlos

    Probé con los corchetes y nada

    Borré los datos de la tabla y le cambié el nombre a la columna a 03_2014 y nada

    En ambos casos me da el sig error:

    Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[03_2019]  from lectura' at line 1

    En la primer consulta solo cambiaba a [03-2014]

    Y si en ves de todo este lio con sql se tratara de solucionar con datagridviewcolumn.name? no se podría filtrar así los nombres de las columnas?

    martes, 25 de marzo de 2014 8:58
  • Hola:
    Te explico la prueba que he hecho en SqlServer.

    He creado una tabla llamada Tabla que contiene un campo llamado 03-2014 Varchar(50)
    He llenado 3 registros con el siguiente contenido:
    aaa
    bbb
    ccc
    Si haces la siguiente consulta
    Select 03-2014 From Tabla, el resultado es:

    -2011
    -2011
    -2011

    Si haces la siguiente consulta
    Select [03-2014] From Tabla, el resultado es:

    aaa
    bbb
    ccc

    Un saludo desde Bilbo
    Carlos

    martes, 25 de marzo de 2014 10:30
  • entiendo, pero al parecer hay algo diferente con mysql

    fijate la captura de pantalla

    http://s0.uploads.im/p7K9l.png

    martes, 25 de marzo de 2014 10:59
  • Hola:

    En la captura veo esta consulta
    SELECT [03_2014] from lectura;

    Si el campo es 03_2014, no se necesita poner los corchetes, con SELECT 03_2014 from lectura te deberia funcionar bien.
    Si no te funciona es que hay algo que a mi se me escapa porque no tengo toda la informacion.

    P.D.
    Yo de MySql ni idea, pero me parece que no tiene que ser muy diferente de SqlServer

    Un saludo desde Bilbo
    Carlos

    miércoles, 26 de marzo de 2014 8:52