• Domingo 22 de Diciembre de 2024, 20:14

Autor Tema:  Sql Que No Ordene Los Datos  (Leído 5036 veces)

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Sql Que No Ordene Los Datos
« en: Sábado 9 de Diciembre de 2006, 17:55 »
0
hola buenas a todos y todas

No sé si se le ha presentado el caso a alguien pero tengo una SQL que me trae unos datos sin problemas, pero me los trae en orden alfabetico y necesito que sea por orden de ingreso, validarlo por campo Fecha no sirve ya que puede ser 10 o 20 registros por la misma fecha, y la tabla No tiene campo ID único.

Esta es la SQL:
Código: Text
  1.  
  2. SELECT A.Asunto AS ASUNTO, COUNT(A.Asunto) AS N_DE_REGISTROS, SUM(A.Cant) AS CANT
  3.  
  4. FROM DISTMASIVA_GESTCALIDAD_DETALLE AS A, TB_REPORTE AS REP
  5.  
  6. WHERE A.CodRegion = REP.CodRegion
  7. And      A.IDSucursal = REP.IDSucursal
  8. And     (A.Asunto="Sobres Entregados"
  9. Or A.Asunto="Sobres Devueltos"
  10. Or A.Asunto="Entregas Verificadas"
  11. Or A.Asunto="Entregas Realizadas Correctamente"
  12. Or A.Asunto="Mala Atencion - Queja del Cliente"
  13. Or A.Asunto="No Identifico al Destinatario"
  14. Or A.Asunto="Entrego Sobre Abierto y sin Cubierta Plastica"
  15. Or A.Asunto="Acuse de Recibido llenado por el Distribuidor"
  16. Or A.Asunto="Devoluciones Verificadas"
  17. Or A.Asunto="A"
  18. Or A.Asunto="B"
  19. Or A.Asunto="C"
  20. Or A.Asunto="D"
  21. Or A.Asunto="E"
  22. Or A.Asunto="F")
  23. And A.TipoGestion=2
  24. And A.Fecha>=REP.Fecha1 And A.Fecha<=REP.Fecha2
  25.  
  26. GROUP BY A.Asunto;
  27.  
  28.  

Quise ver si podía quitar o cambiar el GROUP BY A.Asunto por uno de Fecha pero igual debe estar el campo Asunto para que la estructura de la SQL funcione, ya que es el campo protagonico en esto, pero el orden como trae los datos no me sirve.

El ingreso es este:
Citar
Sobres Entregados
Sobres Devueltos
Entregas Verificadas
Entregas Realizadas Correctamente
Mala Atencion - Queja del Cliente
No Identifico al Destinatario
Entrego Sobre Abierto y sin Cubierta Plastica
Acuse de Recibo llenado por el Distribuidor
Devoluciones Verificadas
A
B
C
D
E
F

Pero la SQL me los trae asi:
Citar
A
B
C
D
Devoluciones Verificadas
E
Entregas Realizadas Correctamente
Entrego Sobre Abierto y sin Cubierta Plastica
F
Mala Atencion - Queja del Cliente
No Identifico al Destinatario
Sobres Devueltos
Sobres Entregados

Simpre he usado SQLs sencillas y cortas y es hora que llevo un corto tiempo haciendo SQLs algo más relacionales y no sé si exista alguna clausula o indicación en sentencias SQL que permita corregir esto, lo que he buscado y leido hasta el momento no me ha direccionado a la solución buscada.

 :unsure:
Si esto es Leído por accidente, induzca al vomito

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #1 en: Sábado 9 de Diciembre de 2006, 19:18 »
0
Si es que A.CodRegion y A.IDSucursal son de tipo identidad, podrias incluirlos en tu SELECT y al final ordenarlos por A.CodRegion y A.IDSucursal.
Ya que iria asi:
Código: Text
  1.  
  2. A.CodRegion        A.IDSucursal
  3.         1                         1
  4.         1                         2  
  5.         1                         3  
  6.         1                         4
  7.         2                         1
  8.         2                         2
  9.         2                         3
  10.         3                         1
  11.         3                         2
  12.         3                         3
  13.  
  14.  
BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #2 en: Sábado 9 de Diciembre de 2006, 19:35 »
0
:(  Tampoco puedo porque CodRegion e IDSucursal son iguales tambien, porque el programa que conecta a esta BD debe gestionar distintas regiones del país y el campo IDSucursal es un abreviativo de la Sucursal

Ejemplo:
Citar
REGION             CodRegion
Capital                      1
Centro                      2
Oriente                     3
Occidente                 4
Zulia-Occidente         5

Cada Region tiene 8 o más Sucursales, en cada ciudad o más de una en una ciudad

Entonces si el programa que trabaja con esta BD y sus SQL se usa en, una region, siempre sería bajo esa Sucursal

Ejemplo:
IDSucursal = MBO
IDSucursal = MDA
IDSucursal = COJ

Son abreviaciones de la Ciudad en donde está la Sucursal u Oficina.
Entonces todos estos registros que se trae la SQL son de la misma region, y de la misma oficina, es decir, todos los registros tienen CodRegion=5 y IDSucursal=MBO

Esto está así porque en una misma Tabla se meten los registros de todas las sucursales de cada region, y por SQLs y código se filtra la información por parámetros, o lo que yo llamaría, campos que ayudan a identificar a qué Region y a qué Sucursal pertenece cada Registro, además de su ID único, claro.  No me servia hacer Tablas pr Sucursal o por Region porque las Sucursales son algo que se Eliminan o se Crean nuevas, y las Regiones, bueno siempre son y seguirán las de siempre.

¿será que le agrego un campo más a la tabla, pero que sea un campo contador? tal vez podría servir porque no hay datos únicos entre registros que permitan ordenarlo  :unsure:
Si esto es Leído por accidente, induzca al vomito

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #3 en: Sábado 9 de Diciembre de 2006, 19:41 »
0
Citar
¿será que le agrego un campo más a la tabla, pero que sea un campo contador?
Esa es la primer solucion que se le viene a uno en mente, pero deberia ser la ultima que se toma  :D  :D  :D  :D  :D .
Hay que pensar en otra solucion, y si no hay, entonces sirve esa solucion.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #4 en: Sábado 9 de Diciembre de 2006, 19:59 »
0
si tengo que pensar en otra porque ahora que lo veo, el contador tampoco me sirve  :nosweat:

ojala exista algo en sql que permita ordenar por longitud de string o algo asi porque sino, pues tendre que aprender a hacer hasta magia  :D  hehehe
Si esto es Leído por accidente, induzca al vomito

lencho

  • Miembro de PLATA
  • *****
  • Mensajes: 1076
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #5 en: Sábado 9 de Diciembre de 2006, 20:06 »
0
Citar
si tengo que pensar en otra porque ahora que lo veo, el contador tampoco me sirve nosweat.gif
por que decis que no te sirve ??
Si en realidad es solo aumentar un ID que sea identidad a la tabla A y decirle que lo ordene por ID al momento de la consulta.

BYTE.
______________________________________________________________________________________
"No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a expresarlo"

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #6 en: Sábado 9 de Diciembre de 2006, 21:40 »
0
porque el ingreso de estos datos los trabaje por Matriz en VB porque eran muchos datos y no queria hacer tantos campos de tabla como Asunto o Motivo, asi que en un Campo llamado "Asunto" meto el Label(i).Caption y en otro campo el Text(i).Text el valor numerico.

y lo comento ilustrandolo con la siguiente imagen  :P

http://img292.imageshack.us/img292/4638/tablasgr6.jpg

Desde los ID=3 hasta todos los ID=4 son los datos que trata esta SQL, porque los que dicen ID=1 y los ID=2 son otros datos, otro tipo de gestion (TipoGestion=1). Entonces si cuento no sirve porque por ejemplo, contemos los ID=3 (hay 15) y de los ID=4 tambien hay 15) siempre serán 15 para ese tipo de ingreso, si yo cuento hasta el ultimo ID=3, ¿cómo hago para que el contador, vuelva a contar desde 0 al empezar los ID=4 en una SQL?

La tabla pequeña es como la general y de datos básicos y de control, y la otra, la más grande son el detalle de esos ingresos, en VB funciona fino este tipo de proceso, y en Crystal pues exceptuando el problema del orden, tambien funciona todo bien, tanto camino recorrido sin problemas y andando todo bien para caer en este pequeño pero importante detalle del orden  <_<

PD: la relacion que hay entre ambas tablas es de "1 a Muchos" tabla izquierda la pequeña y tabla derecha la de detalles, eso con respecto al ID que si es único en la tabla pequeña.
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #7 en: Sábado 9 de Diciembre de 2006, 23:10 »
0
porque no pones las tablas?


a veces este tipo de preguntas cuestan un poco mas de trabajo ayudar, porque hay que 'recostruir el escenario' :P para saber que puede ser


o que se puede ocurrir para ayudar, haciendo pruebas



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #8 en: Sábado 9 de Diciembre de 2006, 23:46 »
0
la bd pesa casi 3MB y en una bd en blanco para ver si podía al menos importar esas dos tablas pues, me comio el access en eso  :blink:

lo que si puedo improvisar por ahora ya es el poner en escrito como son estas tablas, voy...

DISTMASIVA_GESTCALIDAD
CodRegion (Numerico Simple)
IDSucursal (Texto 5)
Fecha (Fecha corta)
ID (Numero simple)

DISTMASIVA_GESTCALIDAD_DETALLE
ID (Numero Simple)
Asunto (Texto 50)
Cant (numero entero largo)
CodRegion (numero simple)
IDSucursal (texto 5)
Fecha (fecha corta)
TipoGestion (numero simple)

Bueno esas son las dos tablas
entonces tal vez a pie pueda metersele datos, asi como por ejemplo el link del screenshot que puse (porque una imagen vale más que mil palabras  :) ) y la SQL también ya está puesta en el primer post.

bueno voy a cruzar los dedos, al menos yo ya llevo bastante tiempo sentado frente al pc, ya al pararme suena como cuando se despega una calcomania  :lol: todo pegajoso LOL! sino, le sigo mañana o si logran algo me avisan bueno  :comp:
Si esto es Leído por accidente, induzca al vomito

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #9 en: Domingo 10 de Diciembre de 2006, 19:46 »
0
ya lo solucione,  B)  siempre se sabe que en esto hay que esperar que la materia gris le de la inspiracion cuando quiere y no cuando uno quiere, y bien sencillito que fue, no sé si drastico pero si funciona, pos pa mi esta bien.

Pues la SQL con el problema, la cual es esta:
Citar
SELECT A.Asunto AS ASUNTO, COUNT(A.Asunto) AS N_DE_REGISTROS, SUM(A.Cant) AS CANT

FROM DISTMASIVA_GESTCALIDAD_DETALLE AS A, TB_REPORTE AS REP

WHERE A.CodRegion = REP.CodRegion
And      A.IDSucursal = REP.IDSucursal
And     (A.Asunto="Sobres Entregados"
Or A.Asunto="Sobres Devueltos"
Or A.Asunto="Entregas Verificadas"
Or A.Asunto="Entregas Realizadas Correctamente"
Or A.Asunto="Mala Atencion - Queja del Cliente"
Or A.Asunto="No Identifico al Destinatario"
Or A.Asunto="Entrego Sobre Abierto y sin Cubierta Plastica"
Or A.Asunto="Acuse de Recibido llenado por el Distribuidor"
Or A.Asunto="Devoluciones Verificadas"
Or A.Asunto="A"
Or A.Asunto="B"
Or A.Asunto="C"
Or A.Asunto="D"
Or A.Asunto="E"
Or A.Asunto="F")
And A.TipoGestion=2
And A.Fecha>=REP.Fecha1 And A.Fecha<=REP.Fecha2

GROUP BY A.Asunto;

Sencillamente la divide en dos SQLs

La primera:
Citar
SELECT A.Asunto AS ASUNTO, COUNT(A.Asunto) AS N_DE_REGISTROS, SUM(A.Cant) AS CANT

FROM DISTMASIVA_GESTCALIDAD_DETALLE AS A, TB_REPORTE AS REP

WHERE A.CodRegion = REP.CodRegion
And      A.IDSucursal = REP.IDSucursal
And     (A.Asunto="Sobres Entregados"
Or A.Asunto="Sobres Devueltos"
Or A.Asunto="Entregas Verificadas"
Or A.Asunto="Entregas Realizadas Correctamente"
Or A.Asunto="Mala Atencion - Queja del Cliente"
Or A.Asunto="No Identifico al Destinatario"
Or A.Asunto="Entrego Sobre Abierto y sin Cubierta Plastica"
Or A.Asunto="Acuse de Recibido llenado por el Distribuidor"
Or A.Asunto="Devoluciones Verificadas")
And A.TipoGestion=2
And A.Fecha>=REP.Fecha1 And A.Fecha<=REP.Fecha2

GROUP BY A.Asunto;

Y la segunda:
Citar
SELECT A.Asunto AS ASUNTO, COUNT(A.Asunto) AS N_DE_REGISTROS, SUM(A.Cant) AS CANT

FROM DISTMASIVA_GESTCALIDAD_DETALLE AS A, TB_REPORTE AS REP

WHERE A.CodRegion = REP.CodRegion
And      A.IDSucursal = REP.IDSucursal
And     (A.Asunto="A"
Or A.Asunto="B"
Or A.Asunto="C"
Or A.Asunto="D"
Or A.Asunto="E"
Or A.Asunto="F")
And A.TipoGestion=2
And A.Fecha>=REP.Fecha1 And A.Fecha<=REP.Fecha2

GROUP BY A.Asunto;

Estas son para unos reportes, pero imaginense, los reportes quedaban así: (notar la parte o sección que dice Auditoria de Calidad)
http://img299.imageshack.us/img299/9392/re...stcalidavi0.jpg

Ahora quedan asi: (notar la parte o sección que dice Auditoria de Calidad)
http://img292.imageshack.us/img292/9449/re...stcalidagy2.jpg

mejor tarde que nunca verdad  :)

 :hola:
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #10 en: Domingo 10 de Diciembre de 2006, 23:26 »
0
que bien :)


Haz probado compactar la base de datos?  B)  


Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #11 en: Domingo 10 de Diciembre de 2006, 23:39 »
0
lo acabo de hacer  B)

porque estaba grande o embasurada?  :huh:
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #12 en: Lunes 11 de Diciembre de 2006, 00:24 »
0
pues es que van quedando registros 'temporales' como donde trabajan las transacciones que le hace uno a las tablas (creo que se le llama table space  :unsure: ) asi como los contadores de datos autonumericos y mucha info mas, que eso va 'inflando' el archivo creo que cuando elimininas los registros quedan con un status de eliminado y no se muestran cuando compactas parece que hace todas esas limpias, y la eliminacion fisica...se me ocurrer incluso  que tal vez a mas bajo nivel se pueden recuperar registros borrados  :unsure:

el caso es que si se 'infla' :angry:  mucho, se nota  al compactar todo lo que le reduce  :blink:



Saludos
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #13 en: Lunes 11 de Diciembre de 2006, 01:30 »
0
uhmmm entonces como que mejor le pongo al programa de esta bd algo en donde periodicamente se compacte la bd para que el usuario lo haga o que automáticamente lo haga el programa cada cierto tiempo, y tambien el que se puedan borrar archivos muuuuy viejos ya existentes, pero de esto ultimo no estoy muy seguro, no sea que siempre se necesiten todos los archivos sin importar su antiguo ingreso, algo asi como un historial, tal vez copiando la bd en un backup y luego borron y cuenta nueva :unsure:
Si esto es Leído por accidente, induzca al vomito

F_Tanori

  • Moderador
  • ******
  • Mensajes: 1919
  • Nacionalidad: mx
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #14 en: Lunes 11 de Diciembre de 2006, 04:11 »
0
si unas opciones de respaldos y mantenimientos, serian muy buenas

 :comp:
" ExIsTo y A vEcEs PiEnSo "

NOTA:
===========================================================================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
===========================================================================================================================

UserCode

  • Miembro MUY activo
  • ***
  • Mensajes: 338
    • Ver Perfil
Re: Sql Que No Ordene Los Datos
« Respuesta #15 en: Lunes 11 de Diciembre de 2006, 14:32 »
0
dicho y hecho, eso mismo voy a hacer  :good:
Si esto es Leído por accidente, induzca al vomito