Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   Order by restringido (https://www.clubdelphi.com/foros/showthread.php?t=26285)

Supermagayin 18-10-2005 20:15:53

Order by restringido
 
Hola a todos.
Tengo una sentencia en SQL que me arroja perfectamente los registros. Mi duda es si existe una forma de ordenarlos por un numero de un campo pero indicandolo yo que quiero primero...por ejm primero que me ponga todos los 7
despues todos los 1 despues todos 4 asi.

num nombre apell

7 Rober lopez
7 juan guitierrez
1 lupe esparza
1 chucha godinez
4 ... ...
4 ... ...


Espero que se entienda mi duda.
Gracias a todos.

Alejandro Vilte 18-10-2005 20:22:16

Hasta donde conosco NO.
Tenes que definir un criterio de ordenamiento.
Cual seria el sentido de ordenar los registros por ejemplo: el 7, 1, 4, 2, 3...Tiene que exisiter una relación entre el campo que queres ordenar.
Que es lo que tenes en mente ? Por ahi hay otro modo de hacerlo.
Vilte Alejandro.

Supermagayin 18-10-2005 20:30:02

Esque el criterio me lo definen a mi asi. Por necesidad, y no es ordenado de mayor a menor ni nada por el estilo.

Entonces..no se podra?

Zeta 18-10-2005 20:52:23

Hacé la consulta, usá una tabla auxiliar con un ID (que serviría de ordenación) y recorré la consulta con un for, dándole desde un vector el orden cada vez que lo ingresás en la tabla temporal
ej: vector(7,1,4)

id Nº Nombre
1 7 Rober lopez
2 1 lupe esparza
3 1 chucha godinez
4 4 ...
5 4 ...

Si la ordenación es siempre igual mucho mejor porque el vector es siempre igual

El id serviría como índice primario y daría la ordenación de como lo introdujiste en la nueva taba.

Saludos

DANY 18-10-2005 21:16:27

No serviria poner otro campo mas en la misma tabla con el nombre por ej. OrdenVisualizacion y ordenas por ese campo? que los usuarios cargen dicho valor? al fin y al cabo, son ellos los unicos que saben como lo quieren ver y vos necesitas de alguna manera tener una referencia de como ordenar, pues que en vez de decirtela la definan por sistema y todos contentos. en el listado o reporte no muestras ese campo pero si lo utilizas en el order by.


SALUDOS!!!

Supermagayin 18-10-2005 22:04:14

Esa idea me gusta Dany, en mi caso seria lo mas rapido. Pero entonces queda descartado por codigo?
Muchas gracia por contestar

Zeta 20-10-2005 07:41:49

Cita:

Empezado por DANY
que los usuarios cargen dicho valor? al fin y al cabo, son ellos los unicos que saben como lo quieren ver

Es más rápido pero muy proclive a los fallos.

A mi criterio estarías abriendo las posibilidades a que ocurran muchos fallos, hay que dejarle hacer a los usuarios lo menos posible, ya que seguramente se van a equivocar, y cuando se equivoquen van a llamarte porque los datos salen mal. Y que alguno me lo refute.

Aparte con la pérdida de productividad que lleva acordarse en que lugar uno quiere que salga el registro.

Hablo por hablar porque no se que tipo de aplicación y a que está orientada, pero para mí el usuario tiene que decidir menos por los datos y solamente se debe dedicar a la entrada y salida de los mismos, no a la lógica del programa, que para eso estás vos.

Además lo hacés una vez y te sacás miles de problemas; y al finalizarlo no hay satisfacción más grande que verlo funcionando.

DANY 21-10-2005 00:45:25

Zeta: Segun tu metodo, vos con que criterio cargarias el orden en la tabla auxiliar?, no es que al fin y al cabo estas definiendo un orden?, acaso lo fijarias? , que pasa si por alguna razon deciden cambiar el orden??, pues ahi seguro que te llaman y no para preguntarte como se cambia, si no para que te llegues a la empresa y lo cambies a mano. Que pasa cuando se agreguen nuevos registros?? en que orden saldrian?? y cuando se eliminan?? ordenando una consulta SQL con un FOR luego de realizada? , No seria mejor unir la tabla auxiliar con la real y mostrar ordenado por el campo de la tabla auxiliar en vez de valerse del for? (en cuyo caso estaria mal NORMALIZADO pero seria la misma solucion que planteo yo). Sin animos de ofender y agradeciendo el aporte que me han dado todos los foristas a veces veo que el foro se desvirtua y se contesta ( y tambien se pregunta) sin criterio.

Zeta 21-10-2005 03:49:24

Cita:

Empezado por Zeta
Hablo por hablar porque no se que tipo de aplicación y a que está orientada, pero para mí el usuario tiene que decidir menos por los datos y solamente se debe dedicar a la entrada y salida de los mismos, no a la lógica del programa, que para eso estás vos.

Con ningún criterio por lo dicho más arriba.

El tipo de respuesta que uno hace es directamente proporcional al tipo de pregunta.

Existen muchas preguntas a hacer: el orden debe ser fijo? el número de datos también? el tipo de datos cuál es?
Existen 10 a la n soluciones al problema.

Además si cambian el tipo de ordenación por algún motivo va a ser por culpa del enfoque que le dio el que te encargó el programa y no porque lo hayas programado en una forma tal que el usuario tenga que manejar muchas variables y cometa muchos errores en la entrada de datos.

No te ofendas ni te pongas a la defensiva Dany, no fue mi intención ofenderte o algo por el estilo, y si por las dudas te ofendí te pido disculpas, es mi punto de vista y nada más.

Además todo buen programa sino tiene una base de datos normalizada es como estar construyendo una casa de ladrillos sobre arena, un día se caerá.


Bye:D

Supermagayin 21-10-2005 04:48:59

Asi es, todos felices y contentos Gracias a Los dos por tomarse el tiempo
y contestar. Y perdonen si mi pregunta no fue lo sufisientemente clara.
Gracias.


La franja horaria es GMT +2. Ahora son las 18:10:14.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi