FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour OT ordenamiento de un query
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
OT ordenamiento de un query
Posted: Fri Dec 05, 2014 03:20 PM
Compa帽eros, tengo el siguiente query

Code (fw): Select all Collapse
cQuery 聽 聽:= "select codigo, r_social, deudacliente( 160, codigo ) as deuda, domicilio, telefono, localidad, c_p, e_mail, cuit, provincia, contacto, ing_brutos, t_factura, t_iva From clientes Order by r_social, deuda "


Me gustar铆a ordenarlo por r_social y la deuda que tiene cada cliente. Necesitar铆a mostrarlo por orden alfab茅tico y aquellos cuya deuda es <> 0 y a continuaci贸n por orden alfab茅tico y los que tienen deuda = 0. El ordenamiento de este query no funciona. Alguna idea ? Muchas gracias

Saludos
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: OT ordenamiento de un query
Posted: Fri Dec 05, 2014 05:33 PM

Puedes separarlas en dos sentencias y unirlas con "UNION",

select ... from ... where deuda != 0 order by r_social, deuda UNION ALL select ... from ... where deuda = 0 order by r_social, deuda

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: OT ordenamiento de un query
Posted: Fri Dec 05, 2014 06:49 PM

Daniel, muchas gracias por tu sugerencia. Pruebo y comento.

Saludos

Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: OT ordenamiento de un query
Posted: Tue Dec 09, 2014 12:47 PM
Daniel, he probado tu sugerencia y encuentro el siguiente problema. El query en cuesti贸n llama a la funci贸n "deudacliente" cuyo alias es "deuda" pero al ponerlo en el where me genera un error ya que "deuda" no es ninguna columna de la tabla.

Code (fw): Select all Collapse
select codigo, r_social, deudacliente( 160, codigo ) as deuda from clientes where deuda <> 0 order by r_social "


Se me ocurre que el motor eval煤a primero el where ( por lo tanto "deuda" no est谩 definido ) y despu茅s toma las columnas. Si pongo la funci贸n en el where, es decir

Code (fw): Select all Collapse
select codigo, r_social, deudacliente( 160, codigo ) as deuda from clientes where deudacliente( 160, codigo ) 聽<> 0 order by r_social "


ejecutar谩 dos veces la funci贸n, y la consulta se hace pesada. Hay alguna otra manera ?. Gracias

Saludos
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM
Re: OT ordenamiento de un query
Posted: Tue Dec 09, 2014 03:01 PM
Hola

prueba esto, lo hice aqui al vuelo, no se si funciona, puedes contarme via gtalk (hangout de google) danielgarciagil@gmail.com o skype: daniel.garcia.gil

Code (fw): Select all Collapse
select 
聽 codigo, 
聽 r_social,
聽 deuda1.deuda
from clientes
inner join (
聽 select
聽 聽 codigo,
聽 聽 deudacliente( 160, codigo ) as deuda
聽 from clientes
聽 group by codigo
) deuda1 on deuda1.codigo = clientes.codigo
deuda1.deuda <> 0 order by r_social
Posts: 1364
Joined: Wed Jun 21, 2006 12:39 AM
Re: OT ordenamiento de un query
Posted: Tue Dec 09, 2014 03:38 PM

Gracias por tu respuesta, pruebo y comento.

Saludos

Continue the discussion