Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: classifica calcio

  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    330

    classifica calcio

    ciao a tutti, avete qualche consiglio su come poter realizzare una classifica non troppo complessa, oppure potete indicarmi qualche tutorial o script per prendere spunto...io avrei pensato a realizzare una tabella classifica contenente nomesquadra, punti, golfatti e golsegnati, e un pannello admin dove inserire settimanalmente questi dati e poi fare una query decrescente ordinata per punti.

    grazie.

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2004
    Messaggi
    3,709
    dipende cosa devi gestire... se devi solo MEMORIZZARE le informazioni allora fai sicuramente una tabella nel db con le voci che ti interessano (punti, gol fatti, etc...), se invece devi anche gestire l'inserimento di dati parziali su cui poi CALCOLARE le informazioni (p.es. i risultati delle partite), allora la tabella così fatta potrebbe anche andar bene, ma certamente dovrai averne almeno un'altra per questi dati "parziali", fermo restando che alcune info (p.es. i gol fatti) non converrà più averli nella tabella "classifica" perchè ricavabili con delle query dalla tabella "partite"

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Prova questo esempio che ti ho scritto

    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,sum(punteggio) as punteggio,sum(fatti) as fatti,sum(subiti) as subiti from
    (
    select sq_casa as squadra,gol_casa as fatti,gol_trasferta as subiti,
    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,
    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
    Poi se usi una tabella relativa alle squadre e riporti solo i relativi id per le partite è meglio.

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    330
    ho visto solo ora la rua soluzione appena provata ti faccio sapere
    grazie.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    330
    una curiosità esiste un modo per importarmi la classifica da un sito...esempio da un sito che aggiorna la classifica posso estrapolare la classifica ed inserirla nella mia pagina, non so con qualche tag o funzione...come iframe di googlemaps
    grazie ancora

  6. #6
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    330
    eccomi qui, allora avrei deciso di fare una tabella partite con

    id giornata
    squadra casa
    gol casa
    squadra fuori
    gol fuori


    adesso voglio una query che scorra tutte le partire presenti nella tabella e stampi una classifica ordinata per punteggio,

    teoricamente dovrei confrontare golcasa-golfuori e assegnare poi alla squadra il relativo punteggio (0,1,3) a seconda del confronto, come faccio a fare il confronto (potrei usare if) e a sommare alla squadra il punteggio volta per volta spero di essere stato chairo

    grazie ancora

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Il dump che ti avevo postato non l'hai nemmeno preso in considerazione.

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    330
    si, solo che pensavo...(poco fa) all'interno della query una volta effettuato il confronto, potrei andare eventualmente a modificare il campo punteggio contenuto all'interno di una'altra tabella classifica

    ovvero
    seleziono tutte le partite presenti al'interno della tabella partite, poi le confronto e a seconda della condizione vado a fare una modifica all'interno di una tabella classifica al campo punteggio sommando di volta in volta il valore....

    scusa la confusione..


    per quanto riguarda la tua risposta è che non ho capito bene il meccanismo, prima di utilizzarla volevo cercare di capire cosa effettivamente fa e non copiare solo il codice, visto la tua disponibilità potresti sommariamente spiegare...
    "select squadra,sum(punteggio) as punteggio,sum(fatti) as fatti,sum(subiti) as subiti from
    ("

    cioè non capisco dove somma i punti relativi ad ogni squadra, cioè non è presente una tabella a parte chiamata squadre, giusto?

    grazie ancora per la pazienza.

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2006
    Messaggi
    330
    comunque grazie per la tua soluzione funziona perfettamente, adesso voglio provare a lavorarci un po su per modificare qualcosa, ancora grazie

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,923
    Ciao. Scusa il ritardo ma non è mi stato possibile intervenire prima. Per capire il meccanismo della mia query devi scomporla nelle sue parti.

    Parti da qui

    codice:
    select sq_casa as squadra,gol_casa as fatti,gol_trasferta as subiti,
    case
    when gol_casa > gol_trasferta then 3
    when gol_casa = gol_trasferta then 1
    else 0
    end as punteggio
    from campionato
    Con questa parte della query ricavo i punteggi delle squadre che hanno giocato in casa, confronto il numero di gol fatti in casa, quelli in trasferta e assegno il relativo punteggio (3,1,0).

    Nella tabellina d'esempio che ho riportato il Cagliari ha giocato due partite, una in casa, persa contro l'Inter 1-2 e una in trasferta. Eseguendo solo la query che ho riportato sopra troverai solo la partita in casa e non quella in trasferta col Genoa.

    Esegui a questo punto questa query

    codice:
    select sq_casa as squadra,gol_casa as fatti,gol_trasferta as subiti,
    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,
    case
    when gol_trasferta > gol_casa then 3
    when gol_trasferta = gol_casa then 1
    else 0
    end as punteggio
    from campionato
    Noterai che il numero di record restituiti è il doppio di quella precedente in quanto vado a verificare ANCHE le partite delle squadre in trasferta. Il procedimento è lo stesso. Sempre attenendomi all'esempio del Cagliari ti troverai anche il record relativo alla vittoria in trasferta sul Genoa (gol fatti 2, subiti 0 e quindi 3 punti in più classifica).

    A questo punto con

    codice:
    select squadra,sum(punteggio) as punteggio,sum(fatti) as fatti,sum(subiti) as subiti from(
    query interna
    ) as tab
    group by squadra
    order by punteggio desc
    raggruppando per squadra, non fai altro che sommare i punti delle singole partite, dei gol fatti e di quelli subiti ordinandoli in maniera decrescente.
    Spero di essere stato sufficientemente chiaro.

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.