Pagina 2 di 3 primaprima 1 2 3 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 23
  1. #11
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Ciao Optime! Grazie per l'aiuto, provando la tua soluzione mi restituisce questo errore:

    #1055 - Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'my_cdb.campionati_SerieA.penalita' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    cercando in rete alcuni cosigliano di cambiare il setting di mysql cancellando la funzione "only_full_group_by", non credo che sia una soluzione buona, può esserci un altro modo?

    Non riesco a copiarti nel messaggio il codice della query, il forum mi blocca...
    Ultima modifica di korn79; 02-07-2020 a 09:41

  2. #12
    scrivi agli admin, se su un forum tecnico non si può postare codice stiamo freschi...

  3. #13
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Esatto, io gli ho scritto, non so quando mi risponderanno, nel frattempo ti allego un file txt con la query, così puoi darci un occhiata.
    File allegati File allegati

  4. #14
    ok, prova a imbrogliare SQL con

    SUM(punteggio)-MAX(campionati_SerieA.penalita) AS punteggio,

    poi sistema la JOIN

    JOIN campionati_SerieA ON squadra=campionati_SerieA.idsquadra AND id_stagione='87'

    (altrimenti prende tutte le stagioni)

  5. #15
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Ottimo! Grazie! così funziona perfettamente, ogni classifica dal 1929 ad oggi ha esattamente tutti i punti esatti compresi di penalizzazioni.
    Ho cambaito solo l'etichetta:

    SUM(punteggio)-MAX(campionati_SerieA.penalita) AS penalty,

    Grazie mille Optime

  6. #16

  7. #17
    quando potrai, posta la query completa

  8. #18
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Ecco qua tutta la query funzionante!

    codice:
    SELECT squadra,squadre_SerieA.nome_squadra,
            SUM(if(fatti!='',1,0)) AS partite,
            SUM(if(punteggio=3,1,0)) AS vittorie,
            SUM(if(punteggio=1,1,0)) AS pareggi,
            SUM(if(punteggio=0 AND fatti != '',1,0)) AS sconfitte,
            SUM(punteggio) AS punteggio,
            SUM(punteggio)-MAX(campionati_SerieA.penalita) AS penalty,
            SUM(fatti) AS fatti,
            SUM(subiti) AS subiti,
            SUM(fatti)-SUM(subiti) AS diff_reti,
            SUM(if(dove='C',fatti,0)) as fatti_casa,
            SUM(if(dove='T',fatti,0)) as fatti_trasferta,
            SUM(if(dove='C',subiti,0)) as subiti_casa,
            SUM(if(dove='T',subiti,0)) as subiti_trasferta,
            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' AND fatti != '',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' AND fatti != '',1,0)) AS sconfitte_trasferta
            FROM
            (SELECT sq_casa AS squadra, gol_sq_casa_and AS fatti, gol_sq_osp_and AS subiti,'C' AS dove, 
            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 punteggio
            FROM partite_SerieA WHERE id_stagione='$str_idstag'
            UNION ALL
            SELECT sq_osp AS squadra, gol_sq_osp_and AS fatti, gol_sq_casa_and AS subiti,'T',
            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 punteggio
            FROM partite_SerieA WHERE id_stagione='$str_idstag'
            UNION ALL
            SELECT sq_casa AS squadra, gol_sq_casa_rit AS fatti, gol_sq_osp_rit AS subiti,'C' AS dove,
            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 punteggio
            FROM partite_SerieA WHERE id_stagione='$str_idstag'
            UNION ALL
            SELECT sq_osp AS squadra, gol_sq_osp_rit AS fatti, gol_sq_casa_rit AS subiti,'T',
            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 punteggio
            FROM partite_SerieA WHERE id_stagione='$str_idstag'
            ) AS tab
            JOIN squadre_SerieA ON squadra=squadre_SerieA.id_squadra
            JOIN campionati_SerieA ON squadra=campionati_SerieA.idsquadra AND id_stagione='$str_idstag'
            GROUP BY squadra
            ORDER BY penalty DESC, diff_reti DESC, fatti DESC, nome_squadra

  9. #19
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    35
    Riprendo questo topic che l'argomento sarebbe il medesimo, in questo caso da questa query dai punti totali di questo alias "punteggio" 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...

    la query è questa:

    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(punt3p=3,1,0)) AS vit_3p,
                    SUM(if(punt3p=1,1,0)) AS pareggi3p,
                    
                    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
    applicando la soluzione:

    codice:
    SUM(punt2p)+SUM(punt3p)-MAX(campionati_SerieA.penalita) AS punteggio,
    poi la JOIN

    codice:
    JOIN campionati_SerieA ON squadra=campionati_SerieA.idsquadra
    ecco il risultato con i valori sballati:

    squadra nome_squadra partite vit_2p pareggi2p vit_3p pareggi3p punt2p punt3p punteggio fatti subiti diff_reti
    71 Juventus 251082 89958 50721 47763 17661 230637 160950 391496 438306 236814 201492
    72 Inter 257312 85360 51744 41712 20152 222464 145288 367752 430496 266552 163944
    69 Milan 246304 78604 51772 39818 21328 208980 140782 349754 402136 251808 150328
    70 Roma 251082 64554 54375 40803 21141 183483 143550 327033 367314 282837 84477

  10. #20
    ma come sarebbe la query completa?

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.