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

Filtrar consulta

Estas en el tema de Filtrar consulta en el foro de Mysql en Foros del Web. No entiendo por que no se puede hacer esto: SELECT (SELECT traducciones.TEXTO FROM traducciones WHERE traducciones.ID_SECCION=4 AND traducciones.TIPO=2 AND traducciones.IDIOMA='1' AND traducciones.ID_ELEMENTO=widget_videojuegos.ID) AS INFO FROM ...
  #1 (permalink)  
Antiguo 29/08/2010, 09:54
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 14 años, 10 meses
Puntos: 5
Filtrar consulta

No entiendo por que no se puede hacer esto:

SELECT

(SELECT traducciones.TEXTO FROM traducciones WHERE traducciones.ID_SECCION=4 AND traducciones.TIPO=2 AND traducciones.IDIOMA='1' AND traducciones.ID_ELEMENTO=widget_videojuegos.ID) AS INFO

FROM otra_tabla

WHERE INFO LIKE '%$palabra%


Al decirle que use en el LIKE el campo INFO que he creado en la consulta del SELECT dice:
Unknown column 'INFO' in 'where clause'

En cambio si haces un order by INFO si que funciona :S

Alguien podria ayudarme?
  #2 (permalink)  
Antiguo 29/08/2010, 10:59
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: Filtrar consulta

Porque no se pueden usar los alias en el WHERE. Es una restricción general de los DBMS porque en el WHERE se está operando sobre las tablas del FROM y en ese contexto el campo "INFO" no existe; esto es: no pertenece a ninguna tabla.
En cambio, si puede usarse en el GROUP BY, ORDER BY o HAVING simplemente porque esas cláusulas operan sobre el resultado de la consulta, es decir, sobre lo que contiene el SELECT.

¿Se entiende la distinción?
__________________
¿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 31/08/2010, 15:00
 
Fecha de Ingreso: junio-2009
Mensajes: 309
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Filtrar consulta

Si, es mas, cambie la palabra WHERE por HAVING y listo. Funciona.
Gracias.

Etiquetas: filtrar
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 01:42.