Autor Tema: Problema de lógica en consulta SQL...  (Leído 1953 veces)

0 Usuarios y 1 Visitante están viendo este tema.

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Problema de lógica en consulta SQL...
« en: Mayo 22, 2013, 07:33:52 pm »
Saludos a todos !!!

Tengo un problema en una consulta SQL. Pero primero debo hablar de la tabla a consultar. Ésta, entre otros campos tiene los siguientes:
- Id_Inscripcion
- Cedula_de_Identidad
- Primer_Apellido
- Segundo_Apellido
- Primer_Nombre
- Segundo_ Nombre
- Telefono_Celular
- Telefono_Fijo
- Fecha_Nacimiento
- Direccion
- Codigo_de_Direccion

Ahora el código de dirección es de esta forma: 00XX-00XX-00XX-000X, donde las primeras 4 cifras corresponden al estado donde reside la persona, el 2do grupo de 4 cifras a las ciudad (perteneciente a dicho estado), el 3er grupo representa el barrio o urbanización, y el último grupo representa el sector del barrio.
Esto es porque necesito ubicar a personas de acuerdo a la zona donde vivan, y esta información la cargo en un DataGridView.

La consulta que uso es:
SELECT Cedula_de_Identidad AS Cedula, " & _
            "Primer_Apellido AS Apellido, " & _
            "Primer_Nombre AS Nombre, " & _
            "Direccion, " & _
            "Telefono_Celular AS Celular " & _
            "FROM Mbrs " & _
            "WHERE Codigo_de_Direccion LIKE '" & codigoParcial & "*'"

Donde codigoParcial representa una porcion del código (un grupo de 4 cifras). pero lamentablemente, no obtengo resultado alguno.

Tuve que incluir cuatro campos adicionales:
- Código_Edo
- Código_Cdd
- Código_Bar
- Código_Sct
Cada uno de ellos correspondientes a las zonas que ya mencioné y usé la consulta de esta forma:

SELECT Cedula_de_Identidad AS Cedula, " & _
            "Primer_Apellido AS Apellido, " & _
            "Primer_Nombre AS Nombre, " & _
            "Direccion, " & _
            "Telefono_Celular AS Celular " & _
            "FROM Mbrs " & _
            "WHERE Codigo_Edo = '" & codigoEstado & "' " & _
            "AND Codigo_Cdd = '" & codigoCiudad & "'"

Este de arriba, para obtener las personas que residen en determinada ciudad... si quería hacer la búsqueda más exaustiva, por ejemplo de un determinado barrio, le agrego:
"AND Codigo_Bar = '" & codigoBarrio & "'"

De esta forma, funciona perfectamente, ya que carga el DataGridView de forma correcta.

Dígame alguien por favor, porque la primera de arriba no me funciona? dónde está el error?
Y pregunto esto, porque me parece que la forma de arriba debería ser la más correcta ya que la segunda, aún cuando funciona me obliga a colocar campos adicionales o quizás redundantes.


Saludos.

Manuel F. Borrego S.
Barcelona. Venezuela.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!

raul338

  • Terabyte
  • *****
  • Mensajes: 894
  • Reputación: +62/-8
  • xD fan!!!!! xD
    • Ver Perfil
    • Raul's Weblog
Re:Problema de lógica en consulta SQL...
« Respuesta #1 en: Mayo 22, 2013, 11:28:23 pm »
Tengo la cabeza medio quemada ahora, no llego a pensar bien la respuesta

Pero te recomiendo 2 cosas para poder ayudarte mejor:

1) Pone los tipos de datos de las columnas de la tabla, pueden ayudar :)

2) Pon las consultas SQL no como estan en visual basic (o el que sea) sino que ponelo y donde va el valor ponelo entre parentesis, ademas podes usar la etiqueta code

quedando así:

Código: (sql) [Seleccionar]
SELECT Cedula_de_Identidad AS Cedula,
Primer_Apellido AS Apellido,
Primer_Nombre AS Nombre,
Direccion,
Telefono_Celular AS Celular
FROM Mbrs
WHERE Codigo_Edo = '(codigoEstado)'
AND Codigo_Cdd = '(codigo)'

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Problema de lógica en consulta SQL...
« Respuesta #2 en: Mayo 23, 2013, 12:58:41 am »
A ver... Yo nunca uso el asterisco como comodín...! Siempre lo hago así...!

La consulta que uso es:
SELECT Cedula_de_Identidad AS Cedula, " & _
            "Primer_Apellido AS Apellido, " & _
            "Primer_Nombre AS Nombre, " & _
            "Direccion, " & _
            "Telefono_Celular AS Celular " & _
            "FROM Mbrs " & _
            "WHERE Codigo_de_Direccion LIKE '" & codigoParcial & "%'"


Verifica y avísame...!
Miguel Núñez.

Waldo

  • Gigabyte
  • ****
  • Mensajes: 264
  • Reputación: +22/-0
    • Ver Perfil
Re:Problema de lógica en consulta SQL...
« Respuesta #3 en: Mayo 23, 2013, 03:15:36 pm »
creo que esta mal el LIKE, es
WHERE codigo LIKE '%algoabuscar%'

ssccaann43

  • Terabyte
  • *****
  • Mensajes: 970
  • Reputación: +97/-58
    • Ver Perfil
    • Sistemas Nuñez, Consultores y Soporte, C.A.
Re:Problema de lógica en consulta SQL...
« Respuesta #4 en: Mayo 23, 2013, 03:53:51 pm »
creo que esta mal el LIKE, es
WHERE codigo LIKE '%algoabuscar%'

El comodin % se usa dependiendo de lo que se requiera buscar... por ejemplo...

Si yo deseo ir listando a medidas de que voy escribiendo, lo coloco de ultimo...

WHERE codigo LIKE 'algoabuscar%'

Si deseo buscar dentro del campo todo lo que contenga lo que escribo, lo coloco en ambos extremos...

WHERE codigo LIKE '%algoabuscar%'

Si por ejemplo no me importa con que numero comienza el codigo, pero el segundo debe ser un 2 y el resto que muestre mientras escribo... (Agrego el underscore) "_"

WHERE codigo LIKE '_2%'

Y así...!

Miguel Núñez.

ADONAIRAFA

  • Gigabyte
  • ****
  • Mensajes: 291
  • Reputación: +37/-1
  • Que bien se siente al terminar un programa !!!
    • Ver Perfil
Re:Problema de lógica en consulta SQL...
« Respuesta #5 en: Mayo 23, 2013, 07:32:53 pm »
Saludos a todos !!!

Gracias por sus respuestas inmediatas !!!
Miguel, Hermano gracias Hermano !!! exactamente la solución que buscaba, lo que pasa es que estaba usando el comodín '*' (asterisco) de mierda :P ese, y no daba para atras ni para adelante !!! pero el de tu primera propuesta:

SELECT Cedula_de_Identidad AS Cedula, " & _
            "Primer_Apellido AS Apellido, " & _
            "Primer_Nombre AS Nombre, " & _
            "Direccion, " & _
            "Telefono_Celular AS Celular " & _
            "FROM Mbrs " & _
            "WHERE Codigo_de_Direccion LIKE '" & codigoParcial & "%'"

Ese si es un tiro !!! funciona perfectamente, asi que Waldo, ssccaann43 tiene toda la razón !!! :o :o :o
Ahora bien, tal como dijo ssccaann43 la que tu propusiste, funciona cuando deseas buscar una porción de un string dentro de otro string más grande.

Gracias a todos !!!


Manuel F. Borrego Sterling 8)

PD: Miguel, ahora en julio DIOS mediante, voy a
      pasar unos días en Caracas, a ver si nos
      encontramos, y nos tomamos unas frías !!!
      cuando puedas pásame tu nro por SMS,
      que tuve que cambiar de teléfono, pero con
      el mismo nro. saludos.
Hay dos tipos de personas: Los que siguen un camino... y los que hacen camino al avanzar !!!