[pgsql-es-ayuda] Problema con ORDER BY

2012-09-11 Por tema Jose Ayala Pineda
Holas, haber si alguien me puede ayudar, esto tratando de sacar un listado
ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el
ORDER BY no reconoce mis caracteres que no sean alfanumericos, por ejemplo:

codigo, nombre
100, JUAN
200, LUCHO
300, ARMANDO
400, _JOSE
500, _adrian

al hacer un select * from mitabla order by nombre devuelve
500, _adrian
300, ARMANDO
400, _JOSE
100, JUAN
200, LUCHO

y deberia mostrar primero los que empiezan por el subguion; he probado con
puntos , guiones, asteriscos y siempre devuelve ordenado por el primer
caracter alfanumerico, no por los otros; hay forma de que el ORDER BY
considere estos caracteres no alfanumericos en la ordenacion.

Gracias de antemano


-- 
Jose J. Ayala Pineda (a.k.a. 1nk@H@ck)
MSN Messenger: j...@hotmail.com
URL/Blog: http://inkahack.blogspot.com
Si tú tienes una manzana y yo tengo una manzana y las intercambiamos,
entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo
tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas.
George Bernard Shaw


Re: [pgsql-es-ayuda] Problema con ORDER BY

2012-09-11 Por tema CarloS Sing Ramos
intenta poniendo  ASC o DESC

El día 5 de septiembre de 2012 19:08, Jose Ayala Pineda
jose...@gmail.com escribió:
 Holas, haber si alguien me puede ayudar, esto tratando de sacar un listado
 ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el
 ORDER BY no reconoce mis caracteres que no sean alfanumericos, por ejemplo:

 codigo, nombre
 100, JUAN
 200, LUCHO
 300, ARMANDO
 400, _JOSE
 500, _adrian

 al hacer un select * from mitabla order by nombre devuelve
 500, _adrian
 300, ARMANDO
 400, _JOSE
 100, JUAN
 200, LUCHO

 y deberia mostrar primero los que empiezan por el subguion; he probado con
 puntos , guiones, asteriscos y siempre devuelve ordenado por el primer
 caracter alfanumerico, no por los otros; hay forma de que el ORDER BY
 considere estos caracteres no alfanumericos en la ordenacion.

 Gracias de antemano


 --
 Jose J. Ayala Pineda (a.k.a. 1nk@H@ck)
 MSN Messenger: j...@hotmail.com
 URL/Blog: http://inkahack.blogspot.com
 Si tú tienes una manzana y yo tengo una manzana y las intercambiamos,
 entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo
 tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas.
 George Bernard Shaw




-- 
Salu2
Linux Register User  #525697
--==[[Carlos Sing]]==--

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Problema con ORDER BY

2012-09-11 Por tema Hellmuth Vargas
buenas Lista

realice la siguiente consulta donde ordeno por el primer carácter: order by
substring(a.nombre,1,1)

select
* from
(values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian'))
as a(codigo, nombre)
order by substring(a.nombre,1,1)

y genera la siguiente salida:

codigo, nombre
400,_JOSE
500,_adrian
300,ARMANDO
100,JUAN
200,LUCHO

para organizarlo en el mismo orden del ejemplo iniciar: order by case when
substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end

select
* from
(values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian'))
as a(codigo, nombre)
order by case when substring(a.nombre,1,1)'_' then
substring(a.nombre,2,1) else 'z' end

y genera la siguiente salida:

codigo, nombre
300,ARMANDO
100,JUAN
200,LUCHO
400,_JOSE
500,_adrian









2012/9/11 CarloS Sing Ramos carloss...@gmail.com

 intenta poniendo  ASC o DESC

 El día 5 de septiembre de 2012 19:08, Jose Ayala Pineda
 jose...@gmail.com escribió:
  Holas, haber si alguien me puede ayudar, esto tratando de sacar un
 listado
  ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el
  ORDER BY no reconoce mis caracteres que no sean alfanumericos, por
 ejemplo:
 
  codigo, nombre
  100, JUAN
  200, LUCHO
  300, ARMANDO
  400, _JOSE
  500, _adrian
 
  al hacer un select * from mitabla order by nombre devuelve
  500, _adrian
  300, ARMANDO
  400, _JOSE
  100, JUAN
  200, LUCHO
 
  y deberia mostrar primero los que empiezan por el subguion; he probado
 con
  puntos , guiones, asteriscos y siempre devuelve ordenado por el primer
  caracter alfanumerico, no por los otros; hay forma de que el ORDER BY
  considere estos caracteres no alfanumericos en la ordenacion.
 
  Gracias de antemano
 
 
  --
  Jose J. Ayala Pineda (a.k.a. 1nk@H@ck)
  MSN Messenger: j...@hotmail.com
  URL/Blog: http://inkahack.blogspot.com
  Si tú tienes una manzana y yo tengo una manzana y las intercambiamos,
  entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y yo
  tengo una idea y las intercambiamos, entonces ambos tendremos dos ideas.
  George Bernard Shaw
 



 --
 Salu2
 Linux Register User  #525697
 --==[[Carlos Sing]]==--

 -
 Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org
 )
 Para cambiar tu suscripción:
 http://www.postgresql.org/mailpref/pgsql-es-ayuda




-- 
Cordialmente,

Ing. Hellmuth I. Vargas S.
Esp. Telemática y Negocios por Internet
Oracle Database 10g Administrator Certified Associate


Re: [pgsql-es-ayuda] Problema con ORDER BY

2012-09-11 Por tema Jose Ayala - CROMOTEX
Gracias por la ayuda, queria ver si alguien podia resolverlo sin tener que
hacer uso de otra funcion, solo con el order by clasico; leyendo por ahi me
indicaban que el problema es la forma en la que se construyen los indices,
y el order by usa estos indices; asi que bueno yo lo solucione asi:

select codigo,nombre from mitabla
ORDER BY ascii(nombre)

Espero q a alguien mas le sirva tmb esto.

P.D. No habia visto/conocia esa posibilidad de hacer tablas on the fly
como lo hace Hellmut para el ejemplo, excelente aporte para mi :)

Saludos

El 11 de septiembre de 2012 11:59, Hellmuth Vargas hiv...@gmail.comescribió:


 buenas Lista

 realice la siguiente consulta donde ordeno por el primer carácter: order
 by substring(a.nombre,1,1)

 select
 * from
 (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian'))
 as a(codigo, nombre)
 order by substring(a.nombre,1,1)

 y genera la siguiente salida:

 codigo, nombre
 400,_JOSE
 500,_adrian
 300,ARMANDO
 100,JUAN
 200,LUCHO

 para organizarlo en el mismo orden del ejemplo iniciar: order by case when
 substring(a.nombre,1,1)'_' then substring(a.nombre,2,1) else 'z' end

 select
 * from
 (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian'))
 as a(codigo, nombre)
 order by case when substring(a.nombre,1,1)'_' then
 substring(a.nombre,2,1) else 'z' end

 y genera la siguiente salida:

 codigo, nombre
 300,ARMANDO
 100,JUAN
 200,LUCHO
 400,_JOSE
 500,_adrian









 2012/9/11 CarloS Sing Ramos carloss...@gmail.com

 intenta poniendo  ASC o DESC

 El día 5 de septiembre de 2012 19:08, Jose Ayala Pineda
 jose...@gmail.com escribió:
  Holas, haber si alguien me puede ayudar, esto tratando de sacar un
 listado
  ordenandolo por descripcion con ORDER BY , pero me he dado cuenta que el
  ORDER BY no reconoce mis caracteres que no sean alfanumericos, por
 ejemplo:
 
  codigo, nombre
  100, JUAN
  200, LUCHO
  300, ARMANDO
  400, _JOSE
  500, _adrian
 
  al hacer un select * from mitabla order by nombre devuelve
  500, _adrian
  300, ARMANDO
  400, _JOSE
  100, JUAN
  200, LUCHO
 
  y deberia mostrar primero los que empiezan por el subguion; he probado
 con
  puntos , guiones, asteriscos y siempre devuelve ordenado por el primer
  caracter alfanumerico, no por los otros; hay forma de que el ORDER BY
  considere estos caracteres no alfanumericos en la ordenacion.
 
  Gracias de antemano
 
 
  --
  Jose J. Ayala Pineda (a.k.a. 1nk@H@ck)
  MSN Messenger: j...@hotmail.com
  URL/Blog: http://inkahack.blogspot.com
  Si tú tienes una manzana y yo tengo una manzana y las intercambiamos,
  entonces ambos aún tendremos una manzana. Pero si tú tienes una idea y
 yo
  tengo una idea y las intercambiamos, entonces ambos tendremos dos
 ideas.
  George Bernard Shaw
 



 --
 Salu2
 Linux Register User  #525697
 --==[[Carlos Sing]]==--

 -
 Enviado a la lista de correo pgsql-es-ayuda (
 pgsql-es-ayuda@postgresql.org)
 Para cambiar tu suscripción:
 http://www.postgresql.org/mailpref/pgsql-es-ayuda




 --
 Cordialmente,

 Ing. Hellmuth I. Vargas S.
 Esp. Telemática y Negocios por Internet
 Oracle Database 10g Administrator Certified Associate



Re: [pgsql-es-ayuda] Problema con ORDER BY

2012-09-11 Por tema Alvaro Herrera
Excerpts from Jose Ayala - CROMOTEX's message of mar sep 11 16:08:19 -0300 2012:
 Gracias por la ayuda, queria ver si alguien podia resolverlo sin tener que
 hacer uso de otra funcion, solo con el order by clasico; leyendo por ahi me
 indicaban que el problema es la forma en la que se construyen los indices,
 y el order by usa estos indices;

Esa explicación no tiene sentido.

 asi que bueno yo lo solucione asi:
 
 select codigo,nombre from mitabla
 ORDER BY ascii(nombre)

Hm.  Creo que si estás en una versión que soporte COLLATION, es mejor
usar eso, porque el ascii() puede fallar en ciertos casos.  Tomando el ejemplo
de Hellmuth:

alvherre=#  select
 * from
 
(values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian'))
 as a(codigo, nombre)
 order by a.nombre collate C;
 codigo | nombre  
+-
300 | ARMANDO
100 | JUAN
200 | LUCHO
400 | _JOSE
500 | _adrian
(5 filas)

eso es lo que quieres, ¿no?

-- 
Álvaro Herrerahttp://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Training  Services

-
Enviado a la lista de correo pgsql-es-ayuda (pgsql-es-ayuda@postgresql.org)
Para cambiar tu suscripci�n:
http://www.postgresql.org/mailpref/pgsql-es-ayuda


Re: [pgsql-es-ayuda] Problema con ORDER BY

2012-09-11 Por tema Hellmuth Vargas
Uy que bien Alvaro!!, la verdad esta funcionalidad no la conocía :-)

 order by a.nombre collate C;


2012/9/11 Alvaro Herrera alvhe...@2ndquadrant.com

 Excerpts from Jose Ayala - CROMOTEX's message of mar sep 11 16:08:19 -0300
 2012:
  Gracias por la ayuda, queria ver si alguien podia resolverlo sin tener
 que
  hacer uso de otra funcion, solo con el order by clasico; leyendo por ahi
 me
  indicaban que el problema es la forma en la que se construyen los
 indices,
  y el order by usa estos indices;

 Esa explicación no tiene sentido.

  asi que bueno yo lo solucione asi:
 
  select codigo,nombre from mitabla
  ORDER BY ascii(nombre)

 Hm.  Creo que si estás en una versión que soporte COLLATION, es mejor
 usar eso, porque el ascii() puede fallar en ciertos casos.  Tomando el
 ejemplo
 de Hellmuth:

 alvherre=#  select
  * from

  
 (values(100,'JUAN'),(200,'LUCHO'),(300,'ARMANDO'),(400,'_JOSE'),(500,'_adrian'))
  as a(codigo, nombre)
  order by a.nombre collate C;
  codigo | nombre
 +-
 300 | ARMANDO
 100 | JUAN
 200 | LUCHO
 400 | _JOSE
 500 | _adrian
 (5 filas)

 eso es lo que quieres, ¿no?

 --
 Álvaro Herrerahttp://www.2ndQuadrant.com/
 PostgreSQL Development, 24x7 Support, Training  Services




-- 
Cordialmente,

Ing. Hellmuth I. Vargas S.