Clasificacion en access

Estoy creando una base de datos para una liga de fútbol y tengo problemas para crear la clasificación. El problema que tengo yo es que a la hora de tener dos equipos empatados a puntos se ordenan alfabéticamente.
Y necesito ordenar la clasificación de la siguiente manera.
En caso de empates:
- 1. Por puntos obtenidos
- 2. Por la diferencia de goles entre los equipos empatados.
- 3. Por la diferencia de goles entre todos los partidos jugados en Liga.
- 4. Por el equipo que mayor números de goles hayan marcados en Liga.
Si me puedes echar una manita.
Respuesta
1
Supongamos que tu base de datos consta de los siguientes campos:
IdEquipo
NombreEquipo
Puntos
Goles a favor
Goles en contra
Si realizas una consulta con todos los campos y ordenas primero por puntos, luego por goles a favor y luego por goles en contra.
Dime si es por ahí que van los tiros.
Hola,
¿Y la diferencia de goles entre ellos?
Un saludo
Si te refieres a la diferencia de goles entre Goles a favor y goles en contra, lo puedes hacer desde la misma consulta creando un campo calculado que reste los GF menos los GC y ordenándolos.
Para el mundial 2010 realicé una base de datos a modo de Fixture y que además me hiciera automáticamente las clasificaciones a las demás etapas hasta la final.
Me refiero la diferencia de goles entre dos equipos, ¿por ejemplo?
Todavía sigo sin entenderte demasiado.
En la consulta ordenas los equipos, primero por puntos obtenidos en orden descendente, en la cuadricula derecha lo ordenas por goles a favor (en orden descendente, enla siguiente cuadricula por goles en contra (en orden ascendente) y por último en la siguiente cuadrícula utilizas una expresión de consulta que me calcule la diferencia de goles (GF-GC) (ordenado en forma descendente).
Cuando ejecutas la consulta te aparecerán ordenada la clasificación del primero al último.
¿Si te quedan dos con exactamente los mismos datos entonces haba que tirar una moneda no?
Si no va por ese lado entonces descríbeme la situación un poco más gráficamente.
Hola, en el primer post yo creo que lo explico bien.
1. Por puntos obtenidos (esto esta claro)
2. Por diferencia de goles entre dos o más equipos. Esto quiere decir que cuando dos o más equipos empatan a puntos existe una diferencia de goles entre los partidos disputados entre si. Por ejemplo,
EQUIPO A ------- 44 puntos PARTIDO IDA - EQUIPO A 2 - 1 EQUIPO B
EQUIPO B ------- 44 puntos PARTIDO VUELTA - EQUIPO B 4 - 1 EQUIPO A
Si te das cuenta la diferencia de goles es de 2 GOLES PARA EL EQUIPO B. Y ese es el problema que tengo yo, que en mi clasificación el EQUIPO B debería estar por encima del EQUIPO A.
Yo creo que esta bastante bien explicado.
Muchas gracias
Un saludo
Veamos.
Si en una consulta donde aparecen los dos equipos igualados por puntos con el simple hecho de ordenar el campo r"Goles a Favor" en forma descendente, ya te posiciona al equipo B en primera posición, de igual forma que si creas un campo caldulado con diferencia de goles ordenado en forma descendente, te colocara primero al equipo B por tener +3 y después al equipo A por tener +1
Por lo menos así entiendo los métodos utilizados para las clasificaciones.
Me he quedado en las mismas
Si quieres enviarme la base, te la reviso y te paso la solución
[email protected]

2 respuestas más de otros expertos

Respuesta
1
Imagino que esto lo estás tratando de obtener a través de una consulta, ¿verdad?
¿Me lo podrías confirmar, si eres tan amable?
Gracias.

http://neckkito.eu5.org
Si efectivamente
Sin ver la estructura de tu consulta es difícil poder darte una respuesta "exacta" a tu problema. Sin embargo, te indico una característica de las consultas que quizá pueda darte una "pista" de cómo puedes realizar la consulta.
Access ordena los datos de las consultas no sólo de manera "vertical" (como te está pasando a ti), sino que podemos "forzar" la consulta para que se realice de manera "horizontal" (por llamarlo de alguna manera). Y esto lo podemos lograr por a través de la ordenación de los campos de la consulta.
Te pongo un ejemplo, para que lo entiendas:
Tú tienes cinco campos, que son (me invento los nombres):
1.- NombreEquipo
2.- PuntosObtenidos
3.- DifGolesEnLiga
4.- GolaverageTodosPartidosEmpatados
5.- DifGolesEquiposEmpatados
Si tú haces la consulta y añades esos campos al grid de la consulta así como están (1 / 2 / 3 / 4 / 5), sin hacer nada más, la consulta no te dará los resultados que deseas.
Pero si tú, en función de lo que pides en tu consulta, añades los campos en el siguiente orden: 1 / 2 / 5 / 3 / 4, y a los campos 2, 3, 4 y 5 les marcas la ordenación descendente, sí te los va ordenar dando prioridad de izquierda a derecha (el 1, como no le has marcado ordenación, es sólo informativo)
Prueba a "reordenar" tu consulta en función de lo que te he explicado, a ver cómo te va.
Si tienes algún problema me lo comentas, y miramos de arreglarlo.
Ya me dirás cosas.
¿Y cómo saco el campo de la diferencia de goles entre equipos?
Lo que yo haría sería realizar consultas parciales, de manera que en cada consulta puedas obtener los datos.
Esas consultas las puedes convertir en consultas de totales, para obtener el total de goles. Después, creas una "macro-consulta", basada en las consultas parciales, para obtener la totalidad de los datos, y realizar la ordenación en esa macro consulta.
De todas maneras no sé cómo tienes montada la BD pero me da la sensación de que lo que quieres conseguir no es precisamente fácil ;)
A ver si con esto puedes hacer alguna cosa. Ya me dirás.
Si no te acaba de salir y quieres pásame la BD comprimida en zip a mi mail, y le echo un vistazo.
La dirección es [email protected]
Ya me dirás ;)
Lo siento pero es una BD muy pesada ya que conlleva muchas tablas, consultas, formularios, etc y no me deja mandártela.
¿No tienes algún sitio donde subirla para compartir archivos? ¿Has probado SugarSync?
Por otra parte, ¿tienes posibilidad de crear una BD nueva e importar sólo las tablas, consultas y formularios que intervienen en la consulta?
Y ya no se me ocurren más soluciones... a no ser que vivas al lado de mi casa, claro ;)
Ya me dirás si puedes hacer alguna de las cosas que te comento.
Otra cosa!
¿Has compilado alguna vez la BD? A veces, compilando, se reduce enormemente el tamaño de la BD.
Ya me dirás.
Compilar es para el código. Para la BD la opción es compactar.
Esto de escribir sin pensar... ;)
A ver como lo apaño, ¿pero de todas formas a la hora de crear una macro-consulta como hago unas consultas parciales?
Me resulta imposible darte una respuesta exacta a lo que pides si no tengo más información. De todas maneras te he creado un ejemplo en una miniBD donde verás que hay una consulta sobre una tabla, una consulta sobre la consulta para hacer una consulta de totales, y una macro-consulta donde se recoge todo lo anterior.
Así podrás ver cómo lo he hecho e intentar adaptarlo a tu BD.
Evidentemente no intentes encontrar un sentido a los datos porque son completamente inventados.
La BD te la puedes bajar aquí
Ya me dirás
Hola, en el primer post yo creo que lo explico bien.
1. Por puntos obtenidos (esto esta claro)
2. Por diferencia de goles entre dos o más equipos. Esto quiere decir que cuando dos o más equipos empatan a puntos existe una diferencia de goles entre los partidos disputados entre si. Por ejemplo,
EQUIPO A ------- 44 puntos PARTIDO IDA - EQUIPO A 2 - 1 EQUIPO B
EQUIPO B ------- 44 puntos PARTIDO VUELTA - EQUIPO B 4 - 1 EQUIPO A
Si te das cuenta la diferencia de goles es de 2 GOLES PARA EL EQUIPO B. Y ese es el problema que tengo yo, que en mi clasificación el EQUIPO B debería estar por encima del EQUIPO A.
3. Por diferencia de goles en LIGA (TODOS LOS PARTIDOS DE LIGA)
Yo creo que esta bastante bien explicado.
Muchas gracias
Un saludo
Está clarísimo a nivel de información "para humanos", pero sigo sin saber nada de tu BD, ni estructura ni campos.
Por ello te doy una solución también "para humanos", sin poderte dar más detalles sobre el tema:
1.- Si tienes los puntos en cada registro tienes que hacer una consulta por totales sumando el campo que contiene esos puntos.
2.- Tienes que hacer una consulta filtrando por los nombres de esos dos equipos y por algún código que te identifique los dos partidos en cuestión. Haces una consulta de totales y le añades un campo calculado en la propia consulta que te dé la diferencia de goles.
3.- Tienes que hacer una consulta por totales de esos equipos en todos los partidos para que te sume todos los goles obtenidos. Después deberás crear otra consulta con un campo calculado para obtener la diferencia de goles.
4.- Con toda esta información deberás crear una consulta que englobe las anteriores para ir añadiendo las columnas con los resultados obtenidos, y de ahí podrás sacar la ordenación clasificatoria como pedías.
Si esta todo muy bien explicado pero el problema no surge no sean esos dos equipos sino otros dos, simplemente quiero que sea automático, quiero que la base vaya sola.
Pues si es así lamento decirte que no sabría cómo hacerlo. No se me ocurre cómo conseguir, con la "volatilidad" de los datos, que el proceso sea totalmente automático, como pides.
No tengo conocimientos suficientes para poder responder a tu consulta.
Lamento mucho no poder ayudarte más. Quizá otro experto que se dedique a programación como profesión pueda tener más idea, o pueda orientarte.
Sorry :(
Respuesta
1
Es simple asumo que todos los campos de diferencias y demás los tienes calculados en tu consulta lo que haces es poner los criterios en el orden
Es decir
Equipo, Puntos, DifeGoles, DifeGol_liga, Goles_Lig
Así sera el orden en la consulta y si usas el generador de consultas le das Ordenar por Ascendente a todos los campos y asunto resuelto :)
Hola,
¿Y la diferencia de goles entre dos equipos?
Un saludo
Es exactamente lo mismo.
Cuando ordenas la consulta va descartando criterios
si criterio 1 = True entonces
if criterio 2 = entonces
Y así sucesivamente hasta tener el orden
¿Pero cómo creo la diferencia de goles entre dos equipos? Porque tengo el problema de dos equipos con los mismos puntos y la diferencia de goles entre ellos varia.
Un saludo
Tengo entendido que la diferencai de goles se calcula para un equipo no para los dos es decir
dife de goles es = anotados - Recibidos
No se calcula entre dos equipos
Es decir si equipo 1 tiene dif de -2 y tu equipo 2 dif -1 cuando tires la consulta si order es ascendente equipo 2 aparecerá primero en la consulta :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas