Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 31
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505

    MySQL - possibile eseguire una query simile?

    salve.

    io avrei una tabella, contenente per ogni riga due squadre di calcio ed eventuale risultato.

    per esempio :

    team1 | team2 | 3 | 1 | gionata1
    team3 | team4 | 1 | 2 | gionata1
    team1 | team4 | 0 | 0 | gionata2
    team3 | team2 | 4 | 2 | gionata2
    team1 | team3 | 2 | 3 | gionata3
    team4 | team2 | 0 | 1 | gionata3
    ...

    è possibile eseguire una query in modo che mi estragga, con una sola query, una classifica?
    del tipo : (n.b. se una squadra vince = 3 punti; se pareggia =1 punto. se perde 0 punti)

    team 3 | 6 punti | 8 gol fatti
    team 4 | 5 punti | 2 gol fatti
    team 1 | 4 punti | 5 gol fatti
    team 2 | 3 punti | 4 gol fatti

    o devo ristrutturare il db? (magari in modo da inserire direttamente i punti in caso di vittoria)

    saluti e spero possiate darmi una mano

  2. #2

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    wow!! ottimo mi metto all'opera per inglobarla nel mio sito grazie nicola75ss

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    cavolo!!! il problema è che io le squadre le ho già tutte inserite. vado solo a fare l'update ai risultati man mano che il campionato avanza. Quindi (per esempio ora che non c'è neanche un risultato, e tutti i risultati sono su -) mi segna le partite come tutte pareggiate.

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Nella query aggiungi una clausola where con la quale cerchi solo i risultati acquisiti.

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    uhm, prima infatti avevo provato ad aggiungerlo, ma visto che son tutti così me li esclude tutti, non me li calcola. deve valutarmeli e assegnare 0 a entrambi..
    credo dovrei aggiungere una cosa tipo WHEN v2 = v1 AND v1!='-' AND v2!?'-' THEN 1 ma la sintassi è sbagliata...

    Codice PHP:
    SELECT 
    squadra

    SUM(punteggio) AS punti,
    COUNT(squadra) AS gioc
    SUM(if(punteggio=3,1,0)) AS vt,
    SUM(if(punteggio=1,1,0)) AS nt,
    SUM(if(punteggio=0,1,0)) AS pt,
    SUM(if(punteggio=and dove "C",1,0)) AS vc,
    SUM(if(punteggio=and dove "C",1,0)) AS nc,
    SUM(if(punteggio=and dove "C",1,0)) AS pc,
    SUM(if(punteggio=and dove "T",1,0)) AS vc,
    SUM(if(punteggio=and dove "T",1,0)) AS nc,
    SUM(if(punteggio=and dove "T",1,0)) AS pc,
    SUM(fatti) AS gtf,
    SUM(subiti) AS gts

    FROM 
    (
    SELECT team1 AS squadrav1 AS fattiv2 AS subiti,"C" AS dove
    CASE
    WHEN v1 v2 THEN 3
    WHEN v2 
    v2 THEN 1
    ELSE 0
    END 
    AS punteggio
    FROM calendario
    UNION ALL
    SELECT team2 
    AS squadrav2 AS fatti,v1 AS subiti,"T",
    CASE
    WHEN v2 v1 THEN 3
    WHEN v2 
    v1 THEN 1
    ELSE 0
    END 
    AS punteggio
    FROM calendario
    ) AS tab [b]WHERE fatti!='-' AND subiti!='-'[/b]
    GROUP BY squadra
    ORDER BY punteggio DESC 

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Gentilmente posta anche il dump della tabella con la create e qualche insert che comprenda sia gare disputate che non.
    Oltretutto vedo campi con gli stessi alias.

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    ok. sotto puoi vedere il dump della tabella calendario (non è completa perchè quì non me la lascia inserire tutta. ci sono solo le prime 4 giornate di andata e le prime 4 di ritorno. per ogni giornata le varie partite, senza risultati perchè devo ancora inserirli. man mano che li inserisco faccio gli update sulle varie righe, e da lì la classifica si aggiorna. è chiaro più o meno?

    Codice PHP:
    CREATE TABLE /*!32312 IF NOT EXISTS*/ "calendario" (
      
    "id" int(11unsigned NOT NULL auto_increment,
      
    "team1" varchar(255NOT NULL,
      
    "team2" varchar(255NOT NULL,
      
    "v1" varchar(255NOT NULL default '-',
      
    "v2" varchar(255NOT NULL default '-',
      
    "giornata" int(11NOT NULL,
      
    "campionato" int(11unsigned NOT NULL,
      
    PRIMARY KEY  ("id")
    AUTO_INCREMENT=168;

    TRUNCATE TABLE "calendario";
    LOCK TABLES "calendario" WRITE;
    /*!40000 ALTER TABLE "calendario" DISABLE KEYS;*/
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('36','C.A. Sernaglia','G.S.A. Montebelluna','-','-',1,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('37','G.S.A. Montebelluna','C.A. Sernaglia','-','-',12,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('38','C.A. Bigolino','A.S.C.D. Mittici','-','-',1,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('39','A.S.C.D. Mittici','C.A. Bigolino','-','-',12,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('40','Amatori Piave T.','C.A. Pieve 2001','-','-',1,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('41','C.A. Pieve 2001','Amatori Piave T.','-','-',12,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('42','C.A. Valdobbiadene','C.A. Farra 90','-','-',1,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('43','C.A. Farra 90','C.A. Valdobbiadene','-','-',12,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('44','G.S.A. Caerano','G.S.A. Contea','-','-',1,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('45','G.S.A. Contea','G.S.A. Caerano','-','-',12,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('46','C.A. Razza Piave','A.F. Conegliano','-','-',1,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('47','A.F. Conegliano','C.A. Razza Piave','-','-',12,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('48','C.A. Pieve 2001','C.A. Valdobbiadene','-','-',2,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('49','C.A. Valdobbiadene','C.A. Pieve 2001','-','-',13,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('50','C.A. Farra 90','C.A. Razza Piave','-','-',2,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('51','C.A. Razza Piave','C.A. Farra 90','-','-',13,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('52','G.S.A. Contea','Amatori Piave T.','-','-',2,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('53','Amatori Piave T.','G.S.A. Contea','-','-',13,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('54','G.S.A. Montebelluna','C.A. Bigolino','-','-',2,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('55','C.A. Bigolino','G.S.A. Montebelluna','-','-',13,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('56','A.S.C.D. Mittici','G.S.A. Caerano','-','-',2,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('57','G.S.A. Caerano','A.S.C.D. Mittici','-','-',13,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('58','A.F. Conegliano','C.A. Sernaglia','-','-',2,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('59','C.A. Sernaglia','A.F. Conegliano','-','-',13,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('60','C.A. Bigolino','C.A. Sernaglia','-','-',3,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('61','C.A. Sernaglia','C.A. Bigolino','-','-',14,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('62','Amatori Piave T.','A.S.C.D. Mittici','-','-',3,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('63','A.S.C.D. Mittici','Amatori Piave T.','-','-',14,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('64','C.A. Valdobbiadene','G.S.A. Contea','-','-',3,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('65','G.S.A. Contea','C.A. Valdobbiadene','-','-',14,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('66','G.S.A. Caerano','G.S.A. Montebelluna','-','-',3,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('67','G.S.A. Montebelluna','G.S.A. Caerano','-','-',14,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('68','C.A. Razza Piave','C.A. Pieve 2001','-','-',3,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('69','C.A. Pieve 2001','C.A. Razza Piave','-','-',14,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('70','C.A. Farra 90','A.F. Conegliano','-','-',3,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('71','A.F. Conegliano','C.A. Farra 90','-','-',14,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('72','C.A. Sernaglia','G.S.A. Caerano','-','-',4,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('73','G.S.A. Caerano','C.A. Sernaglia','-','-',15,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('74','C.A. Pieve 2001','C.A. Farra 90','-','-',4,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('75','C.A. Farra 90','C.A. Pieve 2001','-','-',15,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('76','G.S.A. Contea','C.A. Razza Piave','-','-',4,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('77','C.A. Razza Piave','G.S.A. Contea','-','-',15,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('78','G.S.A. Montebelluna','Amatori Piave T.','-','-',4,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('79','Amatori Piave T.','G.S.A. Montebelluna','-','-',15,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('80','A.S.C.D. Mittici','C.A. Valdobbiadene','-','-',4,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('81','C.A. Valdobbiadene','A.S.C.D. Mittici','-','-',15,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('82','A.F. Conegliano','C.A. Bigolino','-','-',4,'12');
    INSERT INTO "calendario" ("id""team1""team2""v1""v2""giornata""campionato"VALUES ('83','C.A. Bigolino','A.F. Conegliano','-','-',15,'12');
    /*!40000 ALTER TABLE "calendario" ENABLE KEYS;*/
    UNLOCK TABLES;
    /*!40101 SET SQL_MODE=@OLD_SQL_MODE;*/
    /*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;*/ 

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select 
    squadra, 
    sum(punteggio) as punti,
    count(squadra) as gioc, 
    sum(if(punteggio=3,1,0)) as v,
    sum(if(punteggio=1,1,0)) as p,
    sum(if(punteggio=0,1,0)) as s,
    sum(if(punteggio=3 and dove = 'C',1,0)) as vc,
    sum(if(punteggio=1 and dove = 'C',1,0)) as pc,
    sum(if(punteggio=0 and dove = 'C',1,0)) as sc,
    sum(if(punteggio=3 and dove = 'T',1,0)) as vt,
    sum(if(punteggio=1 and dove = 'T',1,0)) as pt,
    sum(if(punteggio=0 and dove = 'T',1,0)) as st,
    sum(fatti) as gtf,
    sum(subiti) as gts
    from (
    select team1 as squadra, v1 as fatti, v2 as subiti,'C' as dove, 
    case
    when v1 > v2 then 3
    when v1 = v2 then 1
    else 0
    end as punteggio
    from calendario
    where v1 != '-'
    union all
    select team2 as squadra, v2 as fatti,v1 as subiti,'T',
    case
    when v2 > v1 then 3
    when v2 = v1 then 1
    else 0
    end as punteggio
    from calendario
    where v2 != '-'
    ) as tab
    group by squadra
    order by punti desc
    P.S. Controlla tra le opzioni di backup del db. Devi avere l'ansi quotes abilitato. Rimuovilo per evitare problemi in fase di reimportazione.

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    505
    ehm ma quella query non mi ritorna niente è appunto questo il problema. Io voglio che mi ritorni appunto la classifica anche se non ci sono dati (cioè se son tutti "-" i valori di v1 e v2 deve darmi partite 0, vittorie 0, ecc ecc)...

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.