Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

[SOLUCIONADO] Order by multiple?

Estas en el tema de Order by multiple? en el foro de Bases de Datos General en Foros del Web. Hola colegas acudo a ustedes para ver que genio me puede ayudar con una pequeña consulta: generalmente tengo la tabla x por llamarlo de algun ...
  #1 (permalink)  
Antiguo 19/11/2015, 10:35
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Pregunta Order by multiple?

Hola colegas acudo a ustedes para ver que genio me puede ayudar con una pequeña consulta:

generalmente tengo la tabla x por llamarlo de algun modo, cuya estructura mas o menos sería la siguiente:

-------------------------------------
id... | inicio | fin | tipo_rango
-------------------------------------
1 | 1 | 4 | 1
2 | 5 | 10 | 2
3 | 11 | 20 | 3

4 | 1 | 4 | 3
5 | 1 | 4 | 2
6 | 5 | 10 | 1

7 | 11 | 20 | 2
8 | 5 | 10 | 3
9 | 11 | 20 | 1

Generalmente el select que quiero lograr me daría como resultado la siguiente tabla; un ORDER BY por inicio y tipo_rango de forma ascendente

-------------------------------------
id... | inicio | fin | tipo_rango
-------------------------------------
1 | 1 | 4 | 1
2 | 5 | 10 | 1
3 | 11 | 20 | 1

4 | 1 | 4 | 2
5 | 5 | 10 | 2
6 | 11 | 20 | 2

7 | 1 | 4 | 3
8 | 5 | 10 | 3
9 | 11 | 20 | 3

Desde ya muchas gracias por su colaboración :D
  #2 (permalink)  
Antiguo 19/11/2015, 10:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Order by multiple?

Lo que pides no tiene sentido...
Ordenar por ID y por tipo_rango son ordenamientos total y absolutamente incompatibles, al menos según se entiende en el ejemplo que nos estás mostrando.
Tienes que entender que los registros se ordenan como objetos completos, por lo que no puedes ordenar lo que aparece en una columna separadamente de lo que está en las otras. Con eso estarías mezclando datos de diferentes registros.
Por dar un ejemplo, el ID 3 en tu tabla de muestra inicial tiene como valor de tipo_rango el 3, por lo que no podría quedar jamás en el puesto 3, pasaría a ocupar el primer puesto del tercer grupo.

Esto es lo que tienes:
Código SQL:
Ver original
  1. 3 | 11 | 20 | 3

Y esto lo que quieres hacer:
Código SQL:
Ver original
  1. 3 | 11 | 20 | 1
Es obvio que el ultimo campo perdio su valor o lo cambio... Eso NO ES ordenar.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 19/11/2015 a las 10:59
  #3 (permalink)  
Antiguo 19/11/2015, 10:47
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Order by multiple?

Q manejador de bases de datos usas??
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #4 (permalink)  
Antiguo 19/11/2015, 11:21
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: Order by multiple?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Lo que pides no tiene sentido...
Ordenar por ID y por tipo_rango son ordenamientos total y absolutamente incompatibles, al menos según se entiende en el ejemplo que nos estás mostrando.
Tienes que entender que los registros se ordenan como objetos completos, por lo que no puedes ordenar lo que aparece en una columna separadamente de lo que está en las otras. Con eso estarías mezclando datos de diferentes registros.
Por dar un ejemplo, el ID 3 en tu tabla de muestra inicial tiene como valor de tipo_rango el 3, por lo que no podría quedar jamás en el puesto 3, pasaría a ocupar el primer puesto del tercer grupo.

Esto es lo que tienes:
Código SQL:
Ver original
  1. 3 | 11 | 20 | 3

Y esto lo que quieres hacer:
Código SQL:
Ver original
  1. 3 | 11 | 20 | 1
Es obvio que el ultimo campo perdio su valor o lo cambio... Eso NO ES ordenar.

No me entendiste, claramente tengo en cuenta lo q planteas, y por otra parte nunca mencioné el ID, pues lo que necesito es ordernar los registros tomando encuenta los dos campos inicio y tipo rango, no estoy pidiendo cambiar ningun valor o id...

como te lo explique generalmente si tengo 3 registros para este ejemplo voy a omitir el id y demás campos que no necesito que conozcan

entonces quedaría algo así:

inicio|tipo_rango
-----------------------
10 | 1
50 | 3
20 | 2

al hacer un select que tenga encuenta el inicio y el tipo de rango del mismo registro claramente, tendría algo así:

10 | 1
20 | 2
50 | 3


ahora me entiendes???

y por otra parte estoy usando MSQL

Última edición por jhonjaider1000; 19/11/2015 a las 11:28
  #5 (permalink)  
Antiguo 19/11/2015, 11:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Order by multiple?

Eso sería un ORDER BY básico, de los que puedes ver en cualquier tutorial elemental...
Código MySQL:
Ver original
  1. ...
  2. ORDER BY inicio, tipo_rango

o si quieres ordenar primero por rango:
Código MySQL:
Ver original
  1. ...
  2. ORDER BY tipo_rango, inicio

Todos los DBMS que existen interpretarán eso.

Respecto a mi no entendimiento.... copie los ejemplos de lo que tu posteaste. Difícilmente podría haber entendido otra cosa con ese ejemplo...
Para futuro te aconsejo lo mismo que pusimos en las reglas de los foros de BBDD: Postea los casos reales con datos reales. Las simulaciones tienden a generar confusión y respuestas equivocadas.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #6 (permalink)  
Antiguo 19/11/2015, 11:35
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: Order by multiple?

Ok amigos, ahora que reorganize mis ideas un poco, he solucionado mi problema tras experimentar un poco en realidad la solución fue muy sencilla, no sabía que en MYSQL se podía hacer una sentencia con ORDER BY enviando varios campos a tener encuenta pense que sería una consulta más compleja :

aquí está el código usado para quíen le sirva en un futuro
Código MySQL:
Ver original
  1. SELECT * FROM rangos  ORDER BY tipo_rango asc, inicio asc
  #7 (permalink)  
Antiguo 19/11/2015, 11:38
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Order by multiple?

MSQL no es lo mismo q mysql........
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #8 (permalink)  
Antiguo 19/11/2015, 11:39
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Order by multiple?

Si el orden es ASC, el ASC es irrelevante en la sentencia, porque por default siemrpe será ascendente.
Por otro lado...
Cita:
no sabía que en MYSQL se podía hacer una sentencia con ORDER BY enviando varios campos a tener encuenta
Como ya te lo mencioné, eso es así en todos los DBMS que existen, es parte del estandar, y lo puedes encontrar en todos los manuales y tutoriales, hasta los más básicos y elementales.

Para dudas de ese tipo te recomiendo consultar siempre el manual de referencia:

http://dev.mysql.com/doc/refman/5.6/...ipulation.html

Es lo que hacemos TODOS los que nos dedicamos a este tema de las bases de datos.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 19/11/2015, 11:47
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: Order by multiple?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Si el orden es ASC, el ASC es irrelevante en la sentencia, porque por default siemrpe será ascendente.
Por otro lado...

Como ya te lo mencioné, eso es así en todos los DBMS que existen, es parte del estandar, y lo puedes encontrar en todos los manuales y tutoriales, hasta los más básicos y elementales.

Para dudas de ese tipo te recomiendo consultar siempre el manual de referencia:

http://dev.mysql.com/doc/refman/5.6/...ipulation.html

Es lo que hacemos TODOS los que nos dedicamos a este tema de las bases de datos.

Igualmente muchas gracias por tu ayuda y la recomendación! colaboro cuando puedo, y he visto que eres un usuario muy activo así que enserio muchas gracias por tu tiempo, por otra parte en verdad en sierta forma no me dedico a las Bases de Datos por tanto no estoy muy lleno del tema, y cuando necesito algo más complejo acudo a ustedes o cualquier otro blog en intenet... trabajo más en la parte de front-end y back-end

Éxitos!
  #10 (permalink)  
Antiguo 19/11/2015, 11:57
 
Fecha de Ingreso: abril-2015
Ubicación: Bogotá D.C - Colombia
Mensajes: 106
Antigüedad: 9 años
Puntos: 11
Respuesta: Order by multiple?

Cita:
Iniciado por Libras Ver Mensaje
MSQL no es lo mismo q mysql........
Jaaja Si claramente no escribí la y por error de digitación

Etiquetas: order, registro, select, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:56.