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

ORDER BY varios campos, pero...

Estas en el tema de ORDER BY varios campos, pero... en el foro de Bases de Datos General en Foros del Web. Hola, a ver si alguien me puede echar una mano. Estoy haciendo una tabla en la que aparece la clasificición de una categoría de fútbol. ...
  #1 (permalink)  
Antiguo 30/08/2005, 17:17
 
Fecha de Ingreso: agosto-2005
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
ORDER BY varios campos, pero...

Hola, a ver si alguien me puede echar una mano.

Estoy haciendo una tabla en la que aparece la clasificición de una categoría de fútbol. Los registros (un total de 18) son los equipos que de esa competición. En la tabla han de quedar reflejados todos los equipos. Los campos de la tabla, además de la ID y del nombre son los siguientes:

puntos, partidosGanados, partidosEmpatados, partidosPerdidos, golesFavor, golesContra.

Debo ordenar los registros primero por el total de puntos obtenidos. En caso de empate de puntos, ordenar por el que tiene más pardidos ganados. Si sigue habiendo empate ordenar por goles a favor. Y si sigue habiendo empate, ordenar por el que tiene menos goles en contra.

Luego, tras ordenar por partidos ganados, se ordena por partidos empatados. De nuevo, si hay empate, se ordena por el campo golesFavor; y si sigue habiendo empate, por el que tenga menos goles en contra.

Finalmente, tras los partidos ganados y empatados, se ordena por partidos perdidos. Pero en este caso, el que tenga menos partidos perdidos. Igualmente si hay empate se ordena primero por goles a favor, y luego por el que tenga menos goles en contra.

Algo así, como resúmen, y teniendo en cuenta que la sintaxis no es válida, sería:

ORDER BY [puntos, (partidosGanados, golesFavor, -golesContra), (partidosEmpatados, golesFavor, -golesContra), (-partidosPerdidos, golesFavor, -golesContra)]

Es un poco lio, y a lo mejor es lo más facil del mundo, pero para mi nivel esto lo veo como una montaña. Por ello agradecería que alguien me pudiera dar alguna pista de cómo hacerlo: si es posible ordenar de esta forma anidada... o si debo utilizar otros métodos... etc.


Gracias de antemano.
  #2 (permalink)  
Antiguo 30/08/2005, 17:34
Avatar de Mickel  
Fecha de Ingreso: mayo-2002
Ubicación: Lima, Peru
Mensajes: 4.619
Antigüedad: 22 años
Puntos: 7
Yo haria esto
Select puntos,partidosGanados,partidosEmpatados,partidosP erdidos,golesFavor,golesContra from (tabla)
order by 1,2,3,5,6 desc

Pruebalo. Deberia servir...
__________________
No tengo firma ahora... :(
  #3 (permalink)  
Antiguo 30/08/2005, 18:37
 
Fecha de Ingreso: agosto-2005
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Gracias mickel, ya he encontrado la solución. el planteamiento era erróneo. lo he comprobado en algunas clasificaciones existentes. se tiene que ordenar en este orden y sin ninguna "anidación" ni nada. puntos, partidosGanados, partidosEmpatados, (-)partidosPerdidos, golesFavor, (-)golesContra

y el código me queda así:

SELECT * FROM tbl_equipos ORDER BY puntos DESC, partidosGanados DESC, partidosEmpatados DESC, partidosPerdidos ASC, golesFavor DESC, golesContra ASC

jugando con ASC y DESC.

bueno, de todas formas muchísimas gracias por la respuesta.
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 16:35.