Modo de ordenar en SQL

Modo de ordenar en SQL

Postby Ramón J. » Sun Sep 02, 2012 5:02 pm

Hola, foro. Desde hace mucho tiempo estoy usando un programa que yo mismo hice con fivewin. Ahora estoy tratando de crear una web con los datos almacenados. Me encuentro con el siguiente problema:

- Uno de los campos es alfanumérico, conteniendo una serie 1,2,3,4,5,6... y a continuación 1CV, 2CV, 3CV. 4CV, 5CV.. . En fivewin ordenada dichos datos con la siguiente sentencia:

index on EMPRESA->CV+padl(alltrim(EMPRESA->NUMERO),7, "0"), con lo que aparecian primero los números 1,2,3,4,5,6,.. etc y a continuación la serie 1CV, 2CV, 3CV, 4CV

¿En SQL cómo sería?

Un saludo y perdonad si la cuestión planteada no correponde a este foro.

Ramón
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Modo de ordenar en SQL

Postby wmormar » Sun Sep 02, 2012 5:10 pm

Ramón J.,

En SQL como tal no existen los archivos de indices. Bastara con hacer esto en la sentencia SQL

SELECT * FROM clientes ORDER BY nombre

Aqui se ordenara por nombre la consulta generada por la sentencia SELECT
William, Morales
Saludos

méxico.sureste
User avatar
wmormar
 
Posts: 1074
Joined: Fri Oct 07, 2005 10:41 pm
Location: México

Re: Modo de ordenar en SQL

Postby Ramón J. » Sun Sep 02, 2012 7:05 pm

Gracias, William, por tu interés.

Sé que en SQL no existe el comando INDEX y sé también que en SQL se ordena con ORDER BY, pero cuando se trata de un campo alfanumérico, que en mi caso se compone de número y caracteres(exclusivamente "CV"), no lo ordena como yo quiero. Por ejemplo, tengo en el campo a ordenar tengo los datos siguientes:

1, 1CV, 2, 2CV, 3, 3CV, etc.. quiero que lo ordene así:

1
2
3
1CV
2CV
3CV

No sé si me he explicado bien

Un saludo
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Modo de ordenar en SQL

Postby thefull » Sun Sep 02, 2012 11:21 pm

Mira si alguna de las soluciones te sirven;
http://www.linuxweblog.com/blogs/sandip ... data-mysql
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
User avatar
thefull
 
Posts: 731
Joined: Fri Oct 07, 2005 7:42 am
Location: Barcelona

Re: Modo de ordenar en SQL

Postby FranciscoA » Sun Sep 02, 2012 11:32 pm

Hola, prueba asi:
Code: Select all  Expand view
SELECT columna FROM tabla ORDER BY CHAR_LENGTH(columna)=3 ;

Saludos.
Francisco J. Alegría P.
Chinandega, Nicaragua.

Fwxh-MySql-TMySql
User avatar
FranciscoA
 
Posts: 2158
Joined: Fri Jul 18, 2008 1:24 am
Location: Chinandega, Nicaragua, C.A.

Re: Modo de ordenar en SQL

Postby Ramón J. » Mon Sep 03, 2012 8:37 am

Gracias, Francisco y Rafa, por vuestra ayuda, pero sigue sin funcionar.

Vuestras sentencias hacen referencia a mysql, y yo estoy usando el editor SQL del Access.
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Modo de ordenar en SQL

Postby xmanuel » Mon Sep 03, 2012 1:56 pm

Prueba esto:
select loginUsuario, prioridad from avisos order by LPAD(loginUsuario, 10,'0')
La funcion es LPAD(columna, ancho,cadenaDeRelleno)
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 761
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Modo de ordenar en SQL

Postby Ramón J. » Mon Sep 03, 2012 6:03 pm

Gracias, xManuel.

He probado con lo que me has dicho y el editor SQL de Access me dice que "la función 'Lpad' no está definida en la expresión"

Concretamente he puesto lo sigueinte:

SELECT SSAATT.N_REG_IFA
FROM SSAATT
ORDER BY LPAD(N_REG_IFA,7,'0');
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Modo de ordenar en SQL

Postby xmanuel » Mon Sep 03, 2012 7:21 pm

El SQL de Access es muy raro :-(

Prueba esto a ver si te funciona:
Right(String(ancho, cadenaDeRelleno) & columna, ancho)

Mira esta página http://www.databasedev.co.uk/access-sql ... tions.html
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 761
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Modo de ordenar en SQL

Postby Ramón J. » Mon Sep 03, 2012 7:39 pm

Manuel, he ejecutado tu instrucción de la siguiente manera:

SELECT SSAATT.N_REG_IFA
FROM SSAATT
ORDER BY RIGHT(STRING(7, '0')& N_REG_IFA,'7');

El resultado es:

7
15
86
101
190
1CV
200
241
321
391
3CV
482
4CV

Si te das cuenta, intercala, al final de cada serie numérica (unidades, decenas, centenas..), los números que tienen "CV". Y lo que pretendo es:

7
15
86
101
190
200
241
321
391
482
1CV
3CV
4CV
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Modo de ordenar en SQL

Postby sysctrl2 » Mon Sep 03, 2012 9:00 pm

que ancho tiene el campo ?

quizas el error esta al guardar la variable

replace campo with alltrim( cVar )

saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1015
Joined: Mon Feb 05, 2007 7:15 pm

Re: Modo de ordenar en SQL

Postby Ramón J. » Mon Sep 03, 2012 9:05 pm

El campo tiene un ancho de 7 caracteres y es alfanumérico
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Modo de ordenar en SQL

Postby Ramón J. » Mon Sep 03, 2012 9:46 pm

He conseguido ordenar el campo, pero en consultas diferentes:

Con esta instrucción ordeno los números que tienen las letras 'CV"

SELECT NUMERO.
FROM EMPRESA (((NUMERO) Like "*CV"))
ORDER BY Right(String(7,'0') & NUMERO,'7');

Y con esta los que no la tienen:

SELECT NUMERO
FROM EMPRESA
WHERE (((NUMERO) Not Like "*CV"))
ORDER BY Right(String(7,'0') & NUMERO,'7');

Ahora la cuestión es unir las consultas sin que se altere el resultado. ¿Como hacerlo?
FWH 20.12 BCC7
Ramón J.
 
Posts: 152
Joined: Mon Feb 13, 2006 8:23 pm

Re: Modo de ordenar en SQL

Postby sysctrl2 » Mon Sep 03, 2012 10:13 pm

quizas la solucion es la siguiente,
cuando el dato es numero, debes de guardarlo como numero

replace with str( val( cVar ), 7)

excel asi lo interpreta.

y cuando el dato es letra y numero reemplazas normal alltrim( cVar )

de esta forma los datos con letras y numeros se alinean a la izq y los numero a la derecha,

y el orden tendrias que ponerlo normal

order by to campo

saludos..
Cesar Cortes Cruz
SysCtrl Software
Mexico

' Sin +- FWH es mejor "
User avatar
sysctrl2
 
Posts: 1015
Joined: Mon Feb 05, 2007 7:15 pm

Re: Modo de ordenar en SQL

Postby xmanuel » Mon Sep 03, 2012 10:17 pm

A ver esto va un poco mejor...
Prueba esto:

(SELECT NUMERO.
FROM EMPRESA (((NUMERO) Like "*CV"))
ORDER BY Right(String(7,'0') & NUMERO,'7') )
UNION ALL
(SELECT NUMERO
FROM EMPRESA
WHERE (((NUMERO) Not Like "*CV"))
ORDER BY Right(String(7,'0') & NUMERO,'7'));

Mira el UNION ALL :P
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 761
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 50 guests