Ver Mensaje Individual
  #4 (permalink)  
Antiguo 04/11/2011, 22:35
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: Duda con consulta SELECT y WHERE

Lo mejor es separar la sentencia y revisarla sólo con el SQL:
Código MySQL:
Ver original
  1.     profesor.id,
  2.     profesor.apellidopaterno,
  3.     profesor.apellidomaterno,
  4.     profesor.nombre,
  5.     escolaridad.descripcion,
  6.     seccion.nombreescuela
  7.     profesor, escolaridad, seccion
  8.     profesor.id_escolaridad = escolaridad.id
  9.     AND
  10.     profesor.id_seccion = seccion.id
  11.     AND
  12.     (apellidopaterno LIKE '%textoABuscar%'
  13.     OR id LIKE '%textoABuscar%'  
  14.     OR apellidomaterno LIKE '%textoABuscar%'
  15.     OR nombre LIKE '%textoABuscar%'  
  16.     OR descripcion LIKE '%textoABuscar%'
  17.     OR nombreescuela LIKE '%textoABuscar%')
  18.     profesor.id,
  19.     profesor.apellidopaterno,
  20.     profesor.apellidomaterno,
  21.     profesor.nombre
Y si: No estás definiendo de qué tabla tomará el "ID".

Tips:
- Usa alias para las tablas. Te complicarás menos con la sintaxis.
- No uses LIKE con valores numéricos, como los ID. No es buena práctica, es poco eficiente y puede generar resultados falsos. LIKE se usa con cadenas de texto, no con datos numéricos.
- Usa INNER|LEFT|RIGHT JOIN. No uses coma. En MySQL es mucho más eficiente el JOIN que la coma, a pesar de lo que los tutoriales dicen.
- Procura no usar el comodín al inicio de las búsquedas con LIKE. Eso hace que se tenga que barrer la tabla completa, lo que es una de las peores formas de consulta que existen. Antes de eso es mejor trabajar con índices FULLTEXT y con MATCH() AGAINST...

Código MySQL:
Ver original
  1.     p.id,
  2.     p.apellidopaterno,
  3.     p.apellidomaterno,
  4.     p.nombre,
  5.     e.descripcion,
  6.     s.nombreescuela
  7.     profesor p
  8.     INNER JOIN escolaridad e ON p.id_escolaridad = e.id
  9.     INNER JOIN seccion s  ON p.id_seccion = s.id
  10.     (apellidopaterno LIKE '%textoABuscar%'
  11.     OR p.id  = textoABuscar  
  12.     OR apellidomaterno LIKE '%textoABuscar%'
  13.     OR nombre LIKE '%textoABuscar%'  
  14.     OR descripcion LIKE '%textoABuscar%'
  15.     OR nombreescuela LIKE '%textoABuscar%')
  16.     p.id,
  17.     p.apellidopaterno,
  18.     p.apellidomaterno,
  19.     p.nombre
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)