Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/09/2012, 10:11
Avatar de gnzsoloyo
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, 5 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)