Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128

    promozioni e retrocessioni

    ho difficoltà a gestire un sistema di promozioni e retrocessioni in vari campionati. vi spiego.

    livello 1 --> 1 girone
    livello 2 --> 2 gironi
    livello 3 --> 4 gironi
    livello 4 --> 8 gironi

    e cosi via... in poche parole, viene promossa sempre la prima in classifica e retrocedono le ultime due.

    le serie le gestisco così:

    ho una tabella dove salvo le serie e i gorni
    una dove salvo le società

    e una dove assegno le società con le serie nelle varie stagioni.

    ecco com'è strutturata quest'ultima tabella:

    codice:
    id_s_serie - id_societa - id_serie - stagione - punti - punti_gare
    id_s_serie è l'id dei record che incrementa ogni volta
    id_societa si capisce
    id_serie si capisce
    stagione è la stagione in cui è stata assegnata la serie
    punti sono i punti che guadagna la società giocando
    punti_gare facendo un esempio con il calcio sono la differenza reti

    un esempio pratico della classifica è questo

    SERIE A
    codice:
    posizione - società - punti gara - punti
    1 ------------- aaa ----- 100 ------ 4
    2-------------- bbb ----- 80 ------- 4
    3 ------------- ccc ----- 30 -------- 3
    4 ------------- ddd ----- 20 -------- 3
    5 ------------- eee ----- 60 -------- 2
    6 ------------- fff ----- 12 -------- 2
    7 ------------- ggg ----- 5 --------- 1
    8 ------------- hhh ----- 3 --------- 1
    SERIE B girone 1
    codice:
    posizione - società - punti gara - punti
    1 ------------- aaa1 ----- 100 ------ 4
    2-------------- bbb1 ----- 80 ------- 4
    3 ------------- ccc1 ----- 30 -------- 3
    4 ------------- ddd1 ----- 20 -------- 3
    5 ------------- eee1 ----- 60 -------- 2
    6 ------------- fff1 ----- 12 -------- 2
    7 ------------- ggg1 ----- 5 --------- 1
    8 ------------- hhh1 ----- 3 --------- 1
    SERIE B girone 2
    codice:
    posizione - società - punti gara - punti
    1 ------------- aaa2 ----- 100 ------ 4
    2-------------- bbb2 ----- 80 ------- 4
    3 ------------- ccc2 ----- 30 -------- 3
    4 ------------- ddd2 ----- 20 -------- 3
    5 ------------- eee2 ----- 60 -------- 2
    6 ------------- fff2 ----- 12 -------- 2
    7 ------------- ggg2 ----- 5 --------- 1
    8 ------------- hhh2 ----- 3 --------- 1
    ora vorrei capire... come posso fare per recuperare gli ultimi due della serie A, poi i primi in classifica della serie B del girone 1 e 2 e riuscirli a sostituire? (poi dovro far lo stesso con le serie inferiori, quindi recuperare gli ultimi due della serie B del girone 1 e 2 e poi recuperare i primi in classifica della serie C etc... qualcuno sa darmi un'aiuto?

  2. #2

  3. #3

  4. #4
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    SEMBRA che l'unica cosa da cambiare è l'id_serie..
    dovresti fare una select che ordini per punti ASC e limit 2 per quelle che devono retrocedere mentre a limit 1 per quelle che devono salire. con un ciclo di UPDATE le sposti. però una volta che ne sposti una, in quel momento hai in una tabella delle squadre in più, e magari il campo punti ha come default 0 e quella squdra prende 0 punti, così quando va a processare quella serie la stessa squadra che hai appena spostato te la rimette dall'altra parte o la retrocede ancora perchè ha 0 punti.. insomma devi studiarla bene, ma non SEMBRA così complicato..

  5. #5
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    Originariamente inviato da telegio
    SEMBRA che l'unica cosa da cambiare è l'id_serie..
    dovresti fare una select che ordini per punti ASC e limit 2 per quelle che devono retrocedere mentre a limit 1 per quelle che devono salire. con un ciclo di UPDATE le sposti. però una volta che ne sposti una, in quel momento hai in una tabella delle squadre in più, e magari il campo punti ha come default 0 e quella squdra prende 0 punti, così quando va a processare quella serie la stessa squadra che hai appena spostato te la rimette dall'altra parte o la retrocede ancora perchè ha 0 punti.. insomma devi studiarla bene, ma non SEMBRA così complicato..
    come avevo detto le serie sono strutturate così:

    livello 1 --> 1 girone
    livello 2 --> 2 gironi
    livello 3 --> 4 gironi
    livello 4 --> 8 gironi

    il mio problema è:

    come faccio a prelevare le ultime due del "1 livello" e le prime del "secondo livello" ?

    le serie sono divisi appunto in livello e gironi

    codice:
    id_serie - livello - girone
    
    PRIMA SERIE
    1 - 1 - 1
    
    
    SECONDA SERIE
    2 - 2 - 1
    3 - 2 - 2
    
    
    TERZA SERIE
    4 - 3 - 1
    5 - 3 - 2
    6 - 3 - 3
    7 - 3 - 4
    
    QUARTA SERIE
    8 - 4 - 1
    9 - 4 - 2
    10 - 4 - 3
    11 - 4 - 4
    12 - 4 - 5
    13 - 4 - 6
    14 - 4 - 7
    15 - 4 - 8
    non so se sono stato chiaro

  6. #6
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    mi autoquoto:
    dovresti fare una select che ordini per punti ASC e limit 2 per quelle che devono retrocedere mentre a limit 1 per quelle che devono salire.
    SELECT * FROM tabella WHERE livello = 1 and girone = 1 order by punti ASC limit 2

    per il livello successivo:
    SELECT * FROM tabella WHERE livello = 2 and girone = 1 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 2 and girone = 2 order by punti ASC limit 1

    SELECT * FROM tabella WHERE livello = 3 and girone = 1 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 3 and girone = 2 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 3 and girone = 3 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 3 and girone = 4 order by punti ASC limit 1

    e così via.. non so se si può automatizzare e fare per tutte le serie una cosa unica.. bisognerebbe vedere, non ho tempo per mettermici a ragionare sopra..
    forse con un ciclo, ma forse sto dicendo una cavolata..

  7. #7
    Utente di HTML.it L'avatar di torrone
    Registrato dal
    Apr 2006
    residenza
    Padova
    Messaggi
    1,128
    Originariamente inviato da telegio
    mi autoquoto:


    SELECT * FROM tabella WHERE livello = 1 and girone = 1 order by punti ASC limit 2

    per il livello successivo:
    SELECT * FROM tabella WHERE livello = 2 and girone = 1 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 2 and girone = 2 order by punti ASC limit 1

    SELECT * FROM tabella WHERE livello = 3 and girone = 1 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 3 and girone = 2 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 3 and girone = 3 order by punti ASC limit 1
    SELECT * FROM tabella WHERE livello = 3 and girone = 4 order by punti ASC limit 1

    e così via.. non so se si può automatizzare e fare per tutte le serie una cosa unica.. bisognerebbe vedere, non ho tempo per mettermici a ragionare sopra..
    forse con un ciclo, ma forse sto dicendo una cavolata..
    mm così potrebbe funzionare.. con un ciclo.. però c'è un problema nel where..

    io nella tabella dove salvo le società e le loro serie con i vari punteggi, registro l'ID della serie. mentre il girone e il livello sono salvati nella tabella delle serie. come posso collegare le due tabelle nella query e far funzionare questo where?

  8. #8
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,592
    come posso collegare le due tabelle nella query e far funzionare questo where?
    come li stampi i dati? con join? allora collegale così..

    ..mentre il girone e il livello sono salvati nella tabella delle serie
    Quelli devi cambiare..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.