FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Consulta por orden de parte Expediente
Hola amigos, tengo el siguiente problema, a ver si me pueden ayudar por favor :
Necesito hacer una consulta sql que me devuelva los registros ordenados por un campo, en este caso el Numero de Expediente, esto que digo parece sencillo pero el problema es como yo genero los numeros de expediente : Año incremento Numero Expediente 2004 1 20041 2004 2 20042 2003 1 20031 2002 1 20021 2002 2 20022 2002 3 20023 ............................................................... 2002 10 200210 una consulta ordenada por Numero expediente devolveria lo siguiente : 200210 20042 20041 20031 20023 20022 20021 y yo lo que quiero es que me devuelva primero los del 2004, despues los del 2003 y despues los del 2002. Aclaro que lo que tengo como numero de expediente es el año y al final le pego otro numero y voy incrementando, no tengo el año por separado. Saludos y muchas gracias |
#3
|
||||
|
||||
supongo que el campo lo guardas como texto... siempre y cuando tengas almacenados solo numeros alli, valdria algo como:
(aclaro que he usado el dialecto interbase, dado que no aclaras que motor usas)
Eso si... no es muy óptimo que digamos... Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#4
|
|||
|
|||
Cita:
20021 20022 20041 20042 200210 y no interesa eso, ya que 200210 ha de estar antes de 20041. De ahí la propuesta que le dí , es decir, extraer el año y ordenarlo y estraer el expediente y ordenarlo como segundo campo |
#5
|
||||
|
||||
Yo creo que ambos entendimos algo diametralmente distinto.
Según mi apreciación, lo que Franklim quiere evitar es precisamente la ordenación textual para conseguir una numérica, pues el expediente 20042 es "inferior" al expediente 200410. Si te das cuenta, hacer una ordenación por el campo de texto que ya tiene concatenado el año y el número de expediente, simplemente, sin "extraer" sus partes lo ordenaría igual que al dividirlo, con lo que no tiene sentido hacerlo; al menos para efectos de la ordenación. No te parece? Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#6
|
||||
|
||||
No se si no entendi el problema o es que no entiendo la respuesta de los amigos cadetill y jachguate, yo al menos haria algo asi
Código:
select * from tabla order by NumeroExpediente Desc
__________________
...Yo naci en esta ribera del arauca vibr@d0r Soy hermano de la espuma, de la garza, de la rosa y del sol... Viva Venezuela |
#7
|
|||
|
|||
Cita:
Pero bueno, a lo que iva, que si hay que ordenar por año, todo numero que empiece por 2002 (por ejemplo) ha de ir delante de cualquier número que empiece por 2004 No se si me he explicado Bueno, veré vuestras contestaciones mañana, que ahora ya me largo a la cama que estoy diciendo muchas tonterías |
#8
|
||||
|
||||
Cita:
De alli que si lo que Franklim quiere es el orden numérico de estos, pues mi solución original es válida. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#9
|
|||
|
|||
Creo que..
Creo que aqui va a estar dura la cosa y es que esta mal diseñada la base de datos, la cual deberia estar :
Año Expediente y para que saliera junto debio de hacerlo con un campo computado, pero ahora la cosa es que ya lo hizo asi...y la solucion va a estar criminal....seria mejor que cambie su base de datos no lo creen asi compañeros... O de plano que la haga manual.. sobres eso si va a estar mas cañon.. pero que se puede se puede..
__________________
saludos desde Puebla Mexico.. asanxt@hotmail.com "como siempre a sus ordenes y siempre con buena cara" 'lolita me excitas, perversa piel de melocotón' |
#10
|
|||
|
|||
Lo siento, Juan Antonio, o no entiendo lo que quieres decir, o tu solución no funciona
A ver, acabo de hacer la siguiente prueba (motor BDE, tabla PDOX) Bien, con esto introduzco los siguientes valores Código:
alfa integer '20021' 20021 '20022' 20022 '20023' 20023 '20041' 20041 '20042' 20042 '200210' 200210 '20031' 20031 '200310' 200310 obtengo el siguiente resultado Cita:
En cambio, si hago mi propuesta (a la que le faltaba un último casteo a integer) Obtenemos la ordenación (creo) esperada Cita:
Bueno, espero que este rollo sirva para algo |
#11
|
||||
|
||||
ups... lo siento, no me habia percatado del asunto, amigo cadetill... pero te asiste toda la razón; sobre todo después de hacer el "cast" de la segunda expresión a entero...
Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#12
|
|||
|
|||
Primero que nada gracias a todos por la ayuda prestada, decir que esta opcion no me la ejecuta Access, pero la idea es la correcta
Me dice que falta operador en la primera linea. Y decir que lo he medio solucionado un poco chapuza pero no se otra manera, he ordenado por fecha y he puesto un indice por el campo fecha ya que para generar el Numero Expediente cojo el año de la fecha asi por lo menos estan agrupados por año aunque no lo esten por Numero expediente. |
#13
|
|||
|
|||
Cita:
Por otra parte, no se si Access admite el SUBSTRING, quizás sea SUBSTR, no se. A parte, lo que yo puse fué un ejemplo, tu has de adaptarlo a tu tabla y a tus campos (lo digo porque veo que es la misma consulta que yo te propuese ). También decirte que en la consulta que has puesto, falta un espacio en alfaas (a de ser alfa as) y en 1for (ha de ser 1 for y 5 for) |
|
|
|