[Php-avanzado] Ayuda con consulta sql...

Lucas Calviño thelookus en gmail.com
Lun Ago 2 18:14:06 ART 2010


Gracias Matías y Leo, siempre con soluciones elegantes, es como vestir a 
Maradona con Armani (Maradona serían mis consultas...)
Bueno, resulta que la consulta de Matías funciona bárbaro en phpmyadmin 
por ej, pero cuando la implemento con php me tira errores, estuve toda 
la tarde probando comillas simples, invertidas, etc...
Pero no consigo ver el error

Tiro el choclo por si algo se me pasa:

1.
IF(prop.precio=0,1,0) AS flag
FROM prop
ORDER BY flag ASC, P.precio ASC

Tira:
Error en la consulta de conteo de registros: SELECT COUNT(*) FROM prop 
INNER JOIN zona ON prop.id_zona=zona.cod INNER JOIN ciudad ON ciudad.id 
= prop.ciudad INNER JOIN tipooper ON prop.id_tipoOper=tipooper.id INNER 
JOIN subtipoprop ON prop.id_subtipoProp=subtipoprop.id INNER JOIN 
tipoprop ON subtipoprop.id_tipoProp=tipoprop.id INNER JOIN inmob ON 
prop.id_inmob=inmob.id WHERE prop.precio >= 0 AND inmob.status = 1 AND 
prop.show = 1 ORDER BY flag ASC, prop.precio ASC . Mysql dijo: *Unknown 
column 'flag' in 'order clause'


2.
*IF(prop.precio=0,1,0) AS flag
FROM prop
ORDER BY 'flag' ASC, P.precio ASC

*Ordena bien por precio pero pasa por alto 'flag'

*Acá encontré un post sobre un error similar, que se debe a la versión 
de mysql
http://bugs.mysql.com/bug.php?id=13551

Alguna idea? gracias por el tiempo. Lucas.


> Sino, en lugar de poner un valor al mismo precio, generale en la 
> consulta un flag al registro y ordená por dos campos:
>
> SELECT P.*, IF(P.precio=0,1,0) AS consultar
> FROM Propiedades AS P
> ORDER BY consultar ASC, P.precio ASC
>
> Probá y decinos.
>
> Saludos!
>
> El 1 de agosto de 2010 12:41, Lucas Calviño <thelookus en gmail.com 
> <mailto:thelookus en gmail.com>> escribió:
>
>     Gracias Leo, se me complica con el if dentro de la consulta, no se
>     porque no me funciona, por el momento voy a usar como decis vos,
>     un valor absurdamente alto pero directamente en la tabla y evaluo
>     cuando muestro.
>
>     Gracias, abrazo. Lucas.
>
>     El 31 de julio de 2010 21:45, Leonardo Tadei - Pegasus Tech Supply
>     <leonardot en pegasusnet.com.ar <mailto:leonardot en pegasusnet.com.ar>>
>     escribió:
>
>         Hola Lucas,
>
>                es un caso raro... no se me ocurre como alterar el
>         orden de los
>         registros de un consulta para un caso particular.
>
>                Podrías hacer una chanchada, y decirle a la query que
>         si el precio es
>         0, entonces ponga un valor absurdamente alto en su lugar, y al
>         mostrar,
>         el precio igual a ese valor no mostrarlo.
>                El problema es que luego deberías impedir que el
>         usuario cargue ese
>         precio usado como flag, porque si no esa propiedad aparecería
>         en 0...
>         las chanchadas tienen su costo oculto siempre!
>
>                Sería algo de la forma:
>
>         SELECT P.*, IF(P.precio = 0,9999999999.99,P.precio)
>         FROM Propiedades AS P
>         ORDER BY P.precio
>
>                Ojo que la coma dentro del IF separa los valores de la
>         función, y el
>         punto es para ponerle decimales al precio!
>
>                Después contanos!
>
>         PD: muy elegante la función que pasa un array en PHP a un
>         array en JS.
>         Las funciones recursivas siempre tienen ese "no sé qué"...
>
>
>         El sáb, 31-07-2010 a las 16:36 -0300, Lucas Calviño escribió:
>         > Hola acudo a la lista xq ando perdido con una consulta sql:
>         >
>         > Tengo propiedades que ordeno por precio, pero el sistema
>         está hecho para
>         > que las propiedades que tienen precio 0 (cero) muestren
>         "consultar".
>         > Resulta que tengo que ordenar de MENOR A MAYOR (osea ASC)
>         pero tengo que
>         > mostrar últimos los registros que tengan 0 (cero), no tengo
>         idea, así si
>         > me tiran una mano, agradecido.
>
>
>         --
>
>         Leonardo Tadei
>         leonardot en pegasusnet.com.ar <mailto:leonardot en pegasusnet.com.ar>
>         http://blog.pegasusnet.com.ar
>         Firma pública:
>         http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>
>         _______________________________________________
>         Php-avanzado mailing list
>         Php-avanzado en pato2.fi.mdp.edu.ar
>         <mailto:Php-avanzado en pato2.fi.mdp.edu.ar>
>         http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
>
>
>     _______________________________________________
>     Php-avanzado mailing list
>     Php-avanzado en pato2.fi.mdp.edu.ar
>     <mailto:Php-avanzado en pato2.fi.mdp.edu.ar>
>     http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
>
>
>
>
> -- 
> Matias Fernando Gea
> matigea en gmail.com <mailto:matigea en gmail.com>
> http://www.mfgea.com.ar
>
>
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/pipermail/php-avanzado/attachments/20100802/21ad997b/attachment.htm 


Más información sobre la lista de distribución Php-avanzado