Pagina 3 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 21 a 30 su 31
  1. #21
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    intendi una cosa del genere?
    codice:
    SUM(punteggiopre63)+SUM(punteggiopost63) AS totale
    però poi non saprei come fare questo:

    codice:
    SUM(if(punteggio=2,1,0)) AS vit_2p,
    SUM(if(punteggio=3,1,0)) AS vit_3p,SUM(if(punteggio=1,1,0)) AS pareggi,
    SUM(if(punteggio=0 AND fatti!= '',1,0)) AS sconfitte

  2. #22
    casomai SUM(punteggiopre63)+SUM(punteggiopost63) AS punteggio

  3. #23
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Giusto! Facendo così funziona e mi fa il totale ricavato da punteggiopre63 e punteggiopost63.

    Ma poi come faccio a ricavare questi dati:

    codice:
    SUM(if(punteggio=2,1,0)) AS vit_2p,
    SUM(if(punteggio=3,1,0)) AS vit_3p,
    SUM(if(punteggio=1,1,0)) AS pareggi,
    SUM(if(punteggio=0 AND fatti!= '',1,0)) AS sconfitte,
    che ovviamente tutta la query ora sarebbe:

    codice:
    SELECT squadra,nome_squadra,
                    SUM(if(fatti!='',1,0)) AS partite,
                    SUM(if(punteggio=2,1,0)) AS vit_2p,
                    SUM(if(punteggio=3,1,0)) AS vit_3p,
                    SUM(if(punteggio=1,1,0)) AS pareggi,
                    SUM(if(punteggio=0 AND fatti!= '',1,0)) AS sconfitte,
                    SUM(punteggiopre63)+SUM(punteggiopost63) AS punteggio,
                    SUM(fatti) AS fatti,
                    SUM(subiti) AS subiti,
                    SUM(fatti)-SUM(subiti) AS diff_reti
                    FROM
                    (SELECT sq_casa AS squadra, gol_sq_casa_and AS fatti, gol_sq_osp_and AS subiti,
                    CASE
                    WHEN gol_sq_casa_and > gol_sq_osp_and THEN 2
                    WHEN gol_sq_casa_and = gol_sq_osp_and AND gol_sq_casa_and <> '' THEN 1
                    ELSE 0
                    END AS punteggiopre63, 0 AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione < '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_and AS fatti, gol_sq_casa_and AS subiti,
                    CASE
                    WHEN gol_sq_osp_and > gol_sq_casa_and THEN 2
                    WHEN gol_sq_osp_and = gol_sq_casa_and AND gol_sq_osp_and <> '' THEN 1
                    ELSE 0
                    END AS punteggiopre63, 0 AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione < '63'
                    UNION ALL
                    SELECT sq_casa AS squadra, gol_sq_casa_rit AS fatti, gol_sq_osp_rit AS subiti,
                    CASE
                    WHEN gol_sq_casa_rit > gol_sq_osp_rit THEN 2
                    WHEN gol_sq_casa_rit = gol_sq_osp_rit AND gol_sq_casa_rit <> '' THEN 1
                    ELSE 0
                    END AS punteggiopre63, 0 AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione < '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_rit AS fatti, gol_sq_casa_rit AS subiti,
                    CASE
                    WHEN gol_sq_osp_rit > gol_sq_casa_rit THEN 2
                    WHEN gol_sq_osp_rit = gol_sq_casa_rit AND gol_sq_osp_rit <> '' THEN 1
                    ELSE 0
                    END AS punteggiopre63, 0 AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione < '63'
                    
                    UNION ALL
                    
                    SELECT sq_casa AS squadra, gol_sq_casa_and AS fatti, gol_sq_osp_and AS subiti, 0 AS punteggiopre63, 
                    CASE
                    WHEN gol_sq_casa_and > gol_sq_osp_and THEN 3
                    WHEN gol_sq_casa_and = gol_sq_osp_and AND gol_sq_casa_and <> '' THEN 1
                    ELSE 0
                    END AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_and AS fatti, gol_sq_casa_and AS subiti, 0 AS punteggiopre63,
                    CASE
                    WHEN gol_sq_osp_and > gol_sq_casa_and THEN 3
                    WHEN gol_sq_osp_and = gol_sq_casa_and AND gol_sq_osp_and <> '' THEN 1
                    ELSE 0
                    END AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    UNION ALL
                    SELECT sq_casa AS squadra, gol_sq_casa_rit AS fatti, gol_sq_osp_rit AS subiti, 0 AS punteggiopre63,
                    CASE
                    WHEN gol_sq_casa_rit > gol_sq_osp_rit THEN 3
                    WHEN gol_sq_casa_rit = gol_sq_osp_rit AND gol_sq_casa_rit <> '' THEN 1
                    ELSE 0
                    END AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_rit AS fatti, gol_sq_casa_rit AS subiti, 0 AS punteggiopre63,
                    CASE
                    WHEN gol_sq_osp_rit > gol_sq_casa_rit THEN 3
                    WHEN gol_sq_osp_rit = gol_sq_casa_rit AND gol_sq_osp_rit <> '' THEN 1
                    ELSE 0
                    END AS punteggiopost63
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    ) AS tab
                    JOIN squadre_SerieA ON squadra=squadre_SerieA.id_squadra
                    GROUP BY squadra
                    ORDER BY punteggio DESC, diff_reti DESC, fatti DESC, nome_squadra
    e mi restituisce l'errore:

    codice:
    Unknown column 'punteggio' in 'field list'

  4. #24
    ti ho già risposto

    Quote Originariamente inviata da optime Visualizza il messaggio
    puoi sempre sommare i due campi con un ulteriore incapsulamento

  5. #25
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Ciao Optime!
    Ok è fatta! la query mi visualizza le due colonne con la somma dei punti dei due campionati da 2 e da 3 punti a vittoria!
    Ho un quesito però che probabilmente tu mi potresti illuminare, allora per risolvere il problema dei pareggi e sconfitte come mi hai detto tu ho incapsulato e poi sommato così:

    codice:
    SUM(if(fatti!='',1,0)) AS partite,
                    
    SUM(if(punt2p=2,1,0)) AS vit_2p,
    SUM(if(punt2p=1,1,0)) AS pareggi2p,
    SUM(if(punt2p=0 AND fatti!= '',1,0)) AS sconfitte2p,
                    
    SUM(if(punt3p=3,1,0)) AS vit_3p,
    SUM(if(punt3p=1,1,0)) AS pareggi3p,
    SUM(if(punt3p=0 AND fatti!= '',1,0)) AS sconfitte3p,
                    
    SUM(punt2p) AS punt2p,
    SUM(punt3p) AS punt3p,
    SUM(punt2p)+SUM(punt3p) AS punteggio,
                    
    SUM(fatti) AS fatti,
    SUM(subiti) AS subiti,
    SUM(fatti)-SUM(subiti) AS diff_reti
    FROM...ecc...
    Ora i pareggi me li conta giusti, invece le sconfitte mi calcola dei valori che non riesco proprio a capire dove il prenda...ti copio tutta la query:

    codice:
    SELECT squadra,nome_squadra,
                    SUM(if(fatti!='',1,0)) AS partite,
                    
                    SUM(if(punt2p=2,1,0)) AS vit_2p,
                    SUM(if(punt2p=1,1,0)) AS pareggi2p,
                    SUM(if(punt2p=0 AND fatti!= '',1,0)) AS sconfitte2p,
                    
                    SUM(if(punt3p=3,1,0)) AS vit_3p,
                    SUM(if(punt3p=1,1,0)) AS pareggi3p,
                    SUM(if(punt3p=0 AND fatti!= '',1,0)) AS sconfitte3p,
                    
                    SUM(punt2p) AS punt2p,
                    SUM(punt3p) AS punt3p,
                    SUM(punt2p)+SUM(punt3p) AS punteggio,
                    
                    SUM(fatti) AS fatti,
                    SUM(subiti) AS subiti,
                    SUM(fatti)-SUM(subiti) AS diff_reti
                    FROM
                    (SELECT sq_casa AS squadra, gol_sq_casa_and AS fatti, gol_sq_osp_and AS subiti,
                    CASE
                    WHEN gol_sq_casa_and > gol_sq_osp_and THEN 2
                    WHEN gol_sq_casa_and = gol_sq_osp_and AND gol_sq_casa_and <> '' THEN 1
                    ELSE 0
                    END AS punt2p, 0 AS punt3p
                    FROM partite_SerieA WHERE id_stagione < '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_and AS fatti, gol_sq_casa_and AS subiti,
                    CASE
                    WHEN gol_sq_osp_and > gol_sq_casa_and THEN 2
                    WHEN gol_sq_osp_and = gol_sq_casa_and AND gol_sq_osp_and <> '' THEN 1
                    ELSE 0
                    END AS punt2p, 0 AS punt3p
                    FROM partite_SerieA WHERE id_stagione < '63'
                    UNION ALL
                    SELECT sq_casa AS squadra, gol_sq_casa_rit AS fatti, gol_sq_osp_rit AS subiti,
                    CASE
                    WHEN gol_sq_casa_rit > gol_sq_osp_rit THEN 2
                    WHEN gol_sq_casa_rit = gol_sq_osp_rit AND gol_sq_casa_rit <> '' THEN 1
                    ELSE 0
                    END AS punt2p, 0 AS punt3p
                    FROM partite_SerieA WHERE id_stagione < '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_rit AS fatti, gol_sq_casa_rit AS subiti,
                    CASE
                    WHEN gol_sq_osp_rit > gol_sq_casa_rit THEN 2
                    WHEN gol_sq_osp_rit = gol_sq_casa_rit AND gol_sq_osp_rit <> '' THEN 1
                    ELSE 0
                    END AS punt2p, 0 AS punt3p
                    FROM partite_SerieA WHERE id_stagione < '63'
                    
                    UNION ALL
                    
                    SELECT sq_casa AS squadra, gol_sq_casa_and AS fatti, gol_sq_osp_and AS subiti, 0 AS punt2p, 
                    CASE
                    WHEN gol_sq_casa_and > gol_sq_osp_and THEN 3
                    WHEN gol_sq_casa_and = gol_sq_osp_and AND gol_sq_casa_and <> '' THEN 1
                    ELSE 0
                    END AS punt3p
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_and AS fatti, gol_sq_casa_and AS subiti, 0 AS punt2p,
                    CASE
                    WHEN gol_sq_osp_and > gol_sq_casa_and THEN 3
                    WHEN gol_sq_osp_and = gol_sq_casa_and AND gol_sq_osp_and <> '' THEN 1
                    ELSE 0
                    END AS punt3p
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    UNION ALL
                    SELECT sq_casa AS squadra, gol_sq_casa_rit AS fatti, gol_sq_osp_rit AS subiti, 0 AS punt2p,
                    CASE
                    WHEN gol_sq_casa_rit > gol_sq_osp_rit THEN 3
                    WHEN gol_sq_casa_rit = gol_sq_osp_rit AND gol_sq_casa_rit <> '' THEN 1
                    ELSE 0
                    END AS punt3p
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    UNION ALL
                    SELECT sq_osp AS squadra, gol_sq_osp_rit AS fatti, gol_sq_casa_rit AS subiti, 0 AS punt2p,
                    CASE
                    WHEN gol_sq_osp_rit > gol_sq_casa_rit THEN 3
                    WHEN gol_sq_osp_rit = gol_sq_casa_rit AND gol_sq_osp_rit <> '' THEN 1
                    ELSE 0
                    END AS punt3p
                    FROM partite_SerieA WHERE id_stagione >= '63'
                    ) AS tab
                    JOIN squadre_SerieA ON squadra=squadre_SerieA.id_squadra
                    GROUP BY squadra
                    ORDER BY punteggio DESC, diff_reti DESC, fatti DESC, nome_squadra
    a logica mi sembrava che si potesse fare come i pareggi con:
    codice:
    SUM(if(punt2p=1,1,0)) AS pareggi2p
    e
    codice:
    SUM(if(punt3p=1,1,0)) AS pareggi3p
    invece sembra di no...

    Ti copio un esempio dal mio mysql come esce:

    squadra nome_squadra partite vit_2p pareggi2p sconfitte2p vit_3p pareggi3p sconfitte3p punt2p punt3p punteggio fatti subiti diff_reti
    71 Juventus 2886 1034 583 1269 549 203 2134 2651 1850 4501 5038 2722 2316
    72 Inter 2924 970 588 1366 474 229 2221 2528 1651 4179 4892 3029 1863
    69 Milan 2864 914 602 1348 463 248 2153 2430 1637 4067 4676 2928 1748

  6. #26
    perché scrivi SUM(if(punt2p=0 AND fatti!= '',1,0)) AS sconfitte2p, invece di SUM(if(punt2p=0,1,0)) AS sconfitte2p, ?

  7. #27
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Ho provato anche a fare così: 0,1,0 come in realtà dovrebbe essere di base mi da sempre quei calcoli che non capisco, comunque ho scritto così: AND fatti!= '',1,0 perchè quando ho solo le partite senza risultati tipo: squadra1 - squadra2 non mi consideri il pareggio ma mi consideri 0 partite 0 pareggi 0 sconfitte.

  8. #28
    mmmm perché nella parte "fake" scrivi END AS punt2p, 0 AS punt3p , quindi quello Zero poi te lo considera come sconfitta...

    potresti provare a usare -1 invece di 0, e trattare solo i numeri positivi nelle somme.

    Oppure, "imbrogliare" ricavando le sconfitte=fatte-vinte-pareggiate (però dovresti anche ricavare fatte2p e fatte3p)

  9. #29
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    ehhh va bheeee allora dillo che sei un grande!

    Ho risolto così:
    codice:
    echo $str_perse_tot = ($str_gioc-$str_vinte_tot-$str_pareg_tot);
    La differenza sono esattamente le partite perse...

    Ti devo però rompere su un ultima cosa e poi questa ENORME QUERY è completa per come mi serve nell'altro topic abbiamo aggiunto i punti di penalizzazione ai vari campionati, in questo caso dai punti totali si dovrebbe togliere i punti di penalità totali, ho già provato ad applicare quello che abbiamo fatto, e nella JOIN togliere il filtro WHERE id_stagione così mi considera tutti i campionati ma facendo così fa dei calcoli assurdi! Mi da dei risulati a 6/7 cifre

  10. #30

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