Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 22
  1. #1
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269

    Gestiona automatica di una classifica di calcio

    Salve ragazzi, volevo chiedere un info sulla gestione automatica di una classifica di calcio, e mi hanno detto che la cosa e gestibile con l'SQL.

    Praticamente io ho un form per l'insierimento degli esiti dei match. Le info vanno a finire in questa tabella:

    id_match - id_torneo - squadra_casa - squadra_trasferta - esito_casa - esito_trasferta - giornata
    1 1 1 2 3 0 1
    2 1 3 4 1 1 1
    Adesso praticamente dovrei ricavare in modo automatico la classifica, la quale deve seguire questo modello:

    G = Giocate
    V = Vinte
    N = Pareggiate
    P = Perse
    GF = Goal fatti
    GS = Goal subiti
    DR = Differenza reti

    TOTALE CASA TRASFERTA GF GS DR
    Pt. G V N P G V N P G V N P

    Qualcuno può aiutarmi, o magari accennarmi a come gestire la situazione...
    Grazie mille
    Con i sogni possiamo conoscere il futuro...

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Sei fortunato.

    codice:
    CREATE TABLE `campionato` (
      `id` int(11) NOT NULL auto_increment,
      `sq_casa` varchar(50) default NULL,
      `sq_trasferta` varchar(50) default NULL,
      `gol_casa` tinyint(4) default NULL,
      `gol_trasferta` tinyint(4) default NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=latin1;
     
    /*Data for the table `campionato` */
     
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (1,'Juve','Milan',3,1);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (2,'Inter','Juve',1,1);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (3,'Roma','Lazio',4,3);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (4,'Fiorentina','Milan',2,2);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (5,'Juve','Fiorentina',1,1);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (6,'Cagliari','Inter',1,2);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (7,'Genoa','Cagliari',0,2);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (8,'Napoli','Juve',2,3);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (9,'Milan','Livorno',2,1);
    insert into `campionato` (`id`,`sq_casa`,`sq_trasferta`,`gol_casa`,`gol_trasferta`) values (10,'Inter','Milan',2,1);
    
     
     
     
    select squadra,
    count(squadra) as partite,
    sum(if(punteggio=3,1,0)) as vittorie,
    sum(if(punteggio=1,1,0)) as pareggi,
    sum(if(punteggio=0,1,0)) as sconfitte,
    sum(punteggio) as punteggio,
    sum(fatti) as fatti,
    sum(subiti) as subiti,
    sum(fatti)-sum(subiti) as diff_reti,
    sum(if(punteggio=3 and dove = "C",1,0)) as vittorie_casa,
    sum(if(punteggio=1 and dove = "C",1,0)) as pareggi_casa,
    sum(if(punteggio=0 and dove = "C",1,0)) as sconfitte_casa,
    sum(if(punteggio=3 and dove = "T",1,0)) as vittorie_trasferta,
    sum(if(punteggio=1 and dove = "T",1,0)) as pareggi_trasferta,
    sum(if(punteggio=0 and dove = "T",1,0)) as sconfitte_trasferta
    from
    (
    select sq_casa as squadra,gol_casa as fatti,gol_trasferta as subiti,"C" as dove, 
    case
    when gol_casa > gol_trasferta then 3
    when gol_casa = gol_trasferta then 1
    else 0
    end as punteggio
    from campionato
    union all
    select sq_trasferta as squadra,gol_trasferta as fatti,gol_casa as subiti,"T",
    case
    when gol_trasferta > gol_casa then 3
    when gol_trasferta = gol_casa then 1
    else 0
    end as punteggio
    from campionato
    ) as tab
    group by squadra
    order by punteggio desc

  3. #3
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Inanzitutto ti ringrazio per la tua immediata risposta, però voglio domandare una cosa:

    Ma si potrebbe ricavare il tutto senza utilizzare una tabella campionato, cioè basandosi solo sulla tabella giornata?

    Grazie anticipatamente!
    Con i sogni possiamo conoscere il futuro...

  4. #4
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Non ho capito cosa intendi con tabella giornata. Per fare ciò che chiedi devi pur avere memorizzato il pregresso.

  5. #5
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Io nella tabella giornata metto le info riguardante al match.. e quindi anche gli esiti.
    Adesso tramite:

    esito_casa e esito_trasferta, si potrebbe ricavare la classifica?
    Mi hanno consigliato di utilizzare le viste(view) di sql.

    Cioè in definitiva si può estrapolare la classifica senza creare un ulteriore tabella classifica?
    perchè io devo gestire tornei in base all'edizione in questo modo:


    nell'edizione 2009 ho 2 tornei :
    TORNEO A e TORNEO B.

    Torneo A ha 2 gironi:
    GIRONE A e GIRONE B.. e

    TORNEO B ha altri 2 gironi
    GIRONE A e GIRONE B..

    Quindi adesso ogni girone avrà una sua classifica...
    io sul db salvo le edizioni in questo modo:

    Tabella edizione
    id_torneo data_edizione tipo_torneo
    1 2009/10/05 estivo
    1 2009/10/05 invernale

    Tabella partecipa
    id_torneo id_squadra divisione
    1 1 A
    1 2 A
    1 3 B

    ...
    Con i sogni possiamo conoscere il futuro...

  6. #6
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Originariamente inviato da gaten
    Cioè in definitiva si può estrapolare la classifica senza creare un ulteriore tabella classifica?
    Il dump che ti ho postato non crea alcuna tabella classifica. Se guardi sono memorizzati solo i risultati degli incontri. La classifica e tutte le altre statistiche vengono calcolate solo sulla base dei risultati inseriti (nel mio dump i nomi delle squadre sono scritti nella tabella ma è ovvio che sia preferibile una tabella apposita per esse con l'inserimento in quella dei risultati solo dei rispettivi identificativi).

    Dovrebbe esserti sufficiente come base per adattarla alle tue necessità, gironi o meno.

  7. #7
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Praticamente io intendevo non crare la tabella classifica...
    ma calcolare la classifica solo in base agli esiti e quindi appoggiandosi sulla tabella "giornata".

    Inoltre..
    :master: quando vado a stampare a video:

    TOTALE CASA
    PT G V N P G V N P ............

    Come vado a stampare a video la classifica, c'è i nomi dei campi quali sono.

    io dovrei eseguire la query e in php stampare la classifica, ma come faccio.
    Grazie
    Con i sogni possiamo conoscere il futuro...

  8. #8
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Nicola, comunque la mia tabella "giornata", può essere paragonata alla tua tabella campionato.
    Inoltre io nei campi:

    squadra_casa e squadra_trasferta, vado a salvare gli identificativi delle squadre e non direttamente le squadra.

    Nel dump che mi hai postato all'inizio, quella query dev'essere ciclata per effettuare il controllo su ogni squadra?
    Con i sogni possiamo conoscere il futuro...

  9. #9
    Utente di HTML.it L'avatar di gaten
    Registrato dal
    Jul 2007
    Messaggi
    1,269
    Scusami Nicola, ho visto che nella query all'inizio tu fai "select squada, count(squadra)"
    adesso, io i nomi delle squadre li ho salvati su una tabella "squadra" così strutturata:

    id_squadra squadra
    1 Juventus
    2 Milan
    3 Inter

    COme faccio a stampare a video i nomi delle squadre e non gli id, come fa ora?
    Non riesco a capire come modificare la query
    Con i sogni possiamo conoscere il futuro...

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    539
    la SELECT estrae i campi specificati da una data tabella;
    se tu scrivi SELECT * vengono estratti tutti i campi;
    se scrivi SELECT squadra viene estratta solo la squadra, e così via...
    per non far apparire l'id della squadra basta NON mettere il campo id_squadra nella SELECT.

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 © 2024 vBulletin Solutions, Inc. All rights reserved.