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

Where en campo "AS"

Estas en el tema de Where en campo "AS" en el foro de Mysql en Foros del Web. Hola, No sé porque no puedo hacer esta consulta: Código PHP: Select campo1 ,  campo2 , IF( 1 = 1 ,  6 ,  0 ) As  idescap From articulos Where publicar = ...
  #1 (permalink)  
Antiguo 11/03/2009, 05:53
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Where en campo "AS"

Hola,

No sé porque no puedo hacer esta consulta:

Código PHP:
Select campo1campo2, IF(1=160) As idescap From articulos Where publicar='True' And idescap=6 Order By idarticulo Limit 5
El tema está en que esta consulta me dice:

Código PHP:
Unknown column 'idescap' in 'where clause' 
¿Por qué?, ¿no puedo poner un condicional en un campo que acabo de crear con un IF?

No sé como resolver esto, ¿podrían ayudarme?

Gracias.
  #2 (permalink)  
Antiguo 11/03/2009, 13:04
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Where en campo "AS"

No entiendo tu condición; si 1 es igual a 1; 1 siempre será igual a 1, por lo que siempre tendrás 6. Creo que no es eso lo que quieres hacer. Dinos lo que quieres hacer. De todas formas, si fuera así, podrías probar esto:


Select campo1, campo2, IF(1=1, 6, 0) As idescap From articulos Where publicar='True' And IF(1=1, 6, 0) =6 Order idarticulo ByLimit 5;
  #3 (permalink)  
Antiguo 11/03/2009, 13:09
Avatar de pacmanaman  
Fecha de Ingreso: marzo-2009
Mensajes: 84
Antigüedad: 15 años, 1 mes
Puntos: 3
Respuesta: Where en campo "AS"

En ambos va en el select y where, como dice jurena!
  #4 (permalink)  
Antiguo 11/03/2009, 16:32
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Respuesta: Where en campo "AS"

Hola,

El IF que he puesto era meramente un ejemplo, simplemente quería poder realizar un "Where" con el campo "idescap" que me devuelve el IF, pero no sé porque no me deja, me devuelve el error que he mostrado arriba.

¿Me habéis entendido ahora?

Un saludo y gracias!
  #5 (permalink)  
Antiguo 11/03/2009, 18:00
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: Where en campo "AS"

SI, pero MySQL no admite el uso de alias en el WHERE, como tampoco admite el uso de funciones agregadas.
Si lo que quieres es realizar ese filtrado, debes hacerlo en el SELECT exterior de una subconsulta:
Código sql:
Ver original
  1. SELECT campo1, campo2, idescap
  2. FROM
  3.     (SELECT
  4.         idarticulo,
  5.         campo1,  
  6.         campo2,  
  7.         IF(campo3=variable, 6, 0) AS idescap,
  8.         publicar  
  9.     FROM articulos) Tabla1
  10. WHERE publicar='True' AND idescap=6
  11. ORDER BY idarticulo LIMIT 5;

El uso de una subconsulta obliga a incluir el campo idarticulo y el publicar en la consulta interna o de lo contrario no se podrá usar para el ordenamiento o el filtrado.
MySQL si admite que un alias se use en un ORDER BY.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 12/03/2009, 06:21
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: Where en campo "AS"

perdonad, pues aunque probé el uso de if en order by, no lo hice en where y no me di cuenta de que no funcionaba. La consulta que debes utilizar es la de gnzsoloyo. Gracias, gnzsoloyo.
  #7 (permalink)  
Antiguo 23/03/2009, 03:57
Avatar de pempas  
Fecha de Ingreso: diciembre-2003
Ubicación: Barcelona
Mensajes: 985
Antigüedad: 20 años, 4 meses
Puntos: 6
Respuesta: Where en campo "AS"

Gracias, así sí que me funcionó correctamente.

Muchas gracias por todo!
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 15:35.