Modo de ordenar en SQL
Modo de ordenar en SQL
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 _ 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
- Uno de _ 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
Re: Modo de ordenar en SQL
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
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
Saludos
méxico.sureste
Re: Modo de ordenar en SQL
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
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
Re: Modo de ordenar en SQL
Mira si alguna de las soluciones te sirven;
http://www.linuxweblog.com/blogs/sandip ... data-mysql
http://www.linuxweblog.com/blogs/sandip ... data-mysql
Saludos
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
Rafa Carmona ( rafa.thefullARROBAgmail.com___quitalineas__)
- FranciscoA
- Posts: 1964
- Joined: Fri Jul 18, 2008 1:24 am
- Location: Chinandega, Nicaragua, C.A.
Re: Modo de ordenar en SQL
Hola, prueba asi:
Saludos.
Code: Select all
SELECT columna FROM tabla ORDER BY CHAR_LENGTH(columna)=3 ;
Francisco J. Alegría P.
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Chinandega, Nicaragua.
Fwxh1204-MySql-TMySql
Re: Modo de ordenar en SQL
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.
Vuestras sentencias hacen referencia a mysql, y yo estoy usando el editor SQL del Access.
FWH 20.12 BCC7
Re: Modo de ordenar en SQL
Prueba esto:
select loginUsuario, prioridad from avisos order by LPAD(loginUsuario, 10,'0')
La funcion es LPAD(columna, ancho,cadenaDeRelleno)
select loginUsuario, prioridad from avisos order by LPAD(loginUsuario, 10,'0')
La funcion es LPAD(columna, ancho,cadenaDeRelleno)
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía
Re: Modo de ordenar en SQL
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');
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
Re: Modo de ordenar en SQL
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
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
Sevilla - Andalucía
Re: Modo de ordenar en SQL
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
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
Re: Modo de ordenar en SQL
que ancho tiene el campo ?
quizas el error esta al guardar la variable
replace campo with alltrim( cVar )
saludos.
quizas el error esta al guardar la variable
replace campo with alltrim( cVar )
saludos.
Cesar Cortes Cruz
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Re: Modo de ordenar en SQL
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?
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
Re: Modo de ordenar en SQL
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..
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 "
SysCtrl Software
Mexico
' Sin +- FWH es mejor "
Re: Modo de ordenar en SQL
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
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
______________________________________________________________________________
Sevilla - Andalucía
Sevilla - Andalucía