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

2 condiciones para una busqueda

Estas en el tema de 2 condiciones para una busqueda en el foro de Mysql en Foros del Web. Que tal, tengo una búsqueda y esta es la consulta que tiene dos condiciones para el mismo campo (proyecto) pero no me funciona ya que ...
  #1 (permalink)  
Antiguo 13/09/2012, 09:52
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 9 meses
Puntos: 4
Pregunta 2 condiciones para una busqueda

Que tal, tengo una búsqueda y esta es la consulta que tiene dos condiciones para el mismo campo (proyecto) pero no me funciona ya que le estoy diciendo que me busque el valor distindo de 0 (cero)

Código SQL:
Ver original
  1. SELECT DISTINCT proyecto FROM tabla WHERE proyecto!='0' AND proyecto LIKE '%$q%' GROUP BY proyecto ORDER BY proyecto

se puede hacer eso?
  #2 (permalink)  
Antiguo 13/09/2012, 10:11
Avatar de 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, 4 meses
Puntos: 2658
Respuesta: 2 condiciones para una busqueda

Bueno, poderse hacer, se puede, pero depende de qué es lo que quieres filtrar. Las dos condiciones se deben cumplir al mismo tiempo para que te devuelva un resultado.
Es decir:
Código MySQL:
Ver original
  1. SELECT DISTINCT proyecto
  2. FROM tabla
  3. WHERE proyecto!='0' AND proyecto LIKE '%$q%'
  4. GROUP BY proyecto
  5. ORDER BY proyecto;
Primero: DISTINCT y GROUP BY en este contexto son redundantes. Una está de más.
Segundo: Lo que le dices es que "proyecto" debe ser diferente de cero, pero también debe ser parecido a un valor no definido. Si ese valor es numérico, el LIKE no se usa, porque devovlería resultados erróneos.
Para que se entienda: buscar LIKE '%1%' podría devolverte 1, 10, 21564, 9856412, es decir, cualquier numero con un uno... porque los evalúa como caracteres y en ese contexto, mientras el numero "1" esté alli, es correcto.
Los identificadores numéricos se buscan como numeros, no con LIKE.

Tercero: si la búsqueda es opcional, la sintaxis está mal. Debería ser:
Código MySQL:
Ver original
  1. SELECT DISTINCT proyecto
  2. FROM tabla
  3. WHERE proyecto!=0 OR proyecto = $q
  4. ORDER BY proyecto;
Pero en ese contexto sería lógicamente igual a:
Código MySQL:
Ver original
  1. SELECT DISTINCT proyecto
  2. FROM tabla
  3. WHERE proyecto!=0
  4. ORDER BY proyecto;
De hecho, si no es opcional, entonces la consulta debería ser:
Código MySQL:
Ver original
  1. SELECT proyecto
  2. FROM tabla
  3. WHERE proyecto = $q ;
porque si está buscando un proyecto dado, nunca será cero, ni tampoco habrá valores diferentes para ese mismo campo...


Creo que tienes que replantearte la lógica de la selección que quieres hacer, porque como se ve, no tiene mucho sentido.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 13/09/2012, 11:47
Avatar de totti026  
Fecha de Ingreso: junio-2011
Mensajes: 150
Antigüedad: 12 años, 9 meses
Puntos: 4
Respuesta: 2 condiciones para una busqueda

gracias!!! gnzsoloyo ha sido de mucha ayuda, ahora comprendo mejor, estare probando

Etiquetas: condiciones, select, tabla, busquedas, campos
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 05:58.