Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/05/2011, 05:22
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: Where con like y select

Mira, yo a la consulta la veo innecesariamente complicada, pero como es muy dependiente de las variables, sin los valores entrantes no se sabe cómo queda finalmente escrita y sin eso no es posible saber si el error es de sintaxis, de lógica, o de restricciones.
Sería buena idea que cuando digas que algo te da error, escribas claramente que error te está dando, porque desde la consulta a veces no se puede determinar eso (sólo si fuera sintáctico, y sin las variables).

Tips:
- LIKE se usa para comparar cadenas. Si lo quieres usar para comparar valores numéricos los resultados pueden ser erróneos. Para eso se usan rangos (BETWEEN, IN(), etc), no LIKE.
- Trata de no usar subconsultas que devuelvan un único valor en el WHERE. Los WHERE se procesan por cada registro obtenido en la selección base, por lo que si devolviese 10.000 registros, esas subconsultas se ejecutarán 10.000 veces. Es más eficiente hacer una consulta para obtener los valores y luego ponerlos en la consulta mayor.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)