Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Tiene algo malo esta consulta??

Estas en el tema de Tiene algo malo esta consulta?? en el foro de Mysql en Foros del Web. Hola, esta consulta la estoy enviando por php, como no me devolvía nada la imprimi en pantalla. Como no soy experto en SQL no se ...
  #1 (permalink)  
Antiguo 08/05/2014, 15:29
 
Fecha de Ingreso: julio-2011
Mensajes: 24
Antigüedad: 12 años, 8 meses
Puntos: 0
Tiene algo malo esta consulta??

Hola, esta consulta la estoy enviando por php, como no me devolvía nada la imprimi en pantalla.
Como no soy experto en SQL no se a donde esta el error en esta consulta.

SELECT * FROM usuarios WHERE id_usuario!='' AND ( apellido_usuario LIKE '%Alejandro%' OR codigo_usuario LIKE '%Alejandro%' OR email_usuario LIKE '%Alejandro%') tipo_usuario = -1 ORDER BY tipo_usuario, apellido_usuario LIMIT 0,30


Gracias!
  #2 (permalink)  
Antiguo 08/05/2014, 15:40
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 2 meses
Puntos: 447
Respuesta: Tiene algo malo esta consulta??

Hola aletutuca:

tienes un pequeño error de sintaxis, después de cerrar el paréntesis, si quieres agregar la condición para el campo tipo_usuario, debes agregar un operador lógico (AND, OR).

Código:
SELECT * 
FROM usuarios 
WHERE id_usuario!='' AND 
( apellido_usuario LIKE '%Alejandro%' OR 
  codigo_usuario LIKE '%Alejandro%' OR 
  email_usuario LIKE '%Alejandro%') AND tipo_usuario = -1
Como recomendación, cuando hagas una consulta, pruébala directamente en una consola de MySQL, es más factible que ahí encuentres una descripción más clara del error.

Saludos
Leo.
  #3 (permalink)  
Antiguo 08/05/2014, 15:47
 
Fecha de Ingreso: julio-2011
Mensajes: 24
Antigüedad: 12 años, 8 meses
Puntos: 0
Respuesta: Tiene algo malo esta consulta??

Leo te agradesco la respuesta!
hice los cambios que me dijiste pero sigue sin devolver resultado.
Esta es la nueva consulta:

SELECT * FROM usuarios WHERE id_usuario!='' AND tipo_usuario = -1 AND ( apellido_usuario LIKE '%ale%' OR codigo_usuario LIKE '%ale%' OR email_usuario LIKE '%ale%') ORDER BY tipo_usuario, apellido_usuario LIMIT 0,30
  #4 (permalink)  
Antiguo 08/05/2014, 16:07
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 2 meses
Puntos: 447
Respuesta: Tiene algo malo esta consulta??

Hola de Nuevo:

Sintácticamente, la consulta está bien construida... por lo tanto, si no te regresa ningún valor, es porque no existen en tu tabla registros que cumplan con todas las condiciones.

Veo que utilizas comparaciones tipo LIKE, debes tener mucho cuidado con estas, pues tienen un pésimo rendimiento... además, debes tener cuidado con el uso de mayúsculas y minúsculas, ya que 'Alejando' no es lo mismo que 'alejando'... Podrías tratar de convertir todo a mayúsculas o minúsculas para ver si es por ahí el problema.

Otro posible error con la información es la primer comparación:

Código:
id_usuario!=''
Debes tener cuidado pues una cadena vacía ('') no es lo mismo que un campo nulo (NULL)

Te recomiendo que vayas probando una a una las condiciones y revises sque efectivamente la información exista en la BD's.

Saludos
Leo.
  #5 (permalink)  
Antiguo 10/05/2014, 04:24
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Tiene algo malo esta consulta??

En general estoy de acuerdo con lo dicho por leonardo, aunque no tanto en lo referido a LIKE, no porque sea eficiente, que no lo es, sino porque ese es el modo, si se usa la codificación case insensitive, de traerte los registros independientemente de tildes y mayúsculas y minúsculas. Creo, pues, como sugiere leonardo, que el problema es probablemente
Código SQL:
Ver original
  1. id_usuario!=''

Deberías hacer la consulta quitando esa parte y ver qué te devuelve en ese campo. Así comprobarías qué valores hay para ese campo id_usuario, si NULL, vacío, espacios en blanco o alguna otra cosa. De todas formas, si se trata de un primary key que se genera añadiendo números automáticamente y no admite NULL, ni vacíos, lo que podría estar ocurriendo es lo que también te sugiere leonardo: que no haya registros devueltos para esa consulta, porque no se da ningún caso en el que se cumplan todas las condiciones.

Etiquetas: malo, php, select, sql, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.