Query "semplice"

di il
28 risposte

Query "semplice"

Ciao a tutti,
Sto praticamente impazzendo per una query che a prima vista avrei dovuto farla schioccando le dita.
Invece sto avendo delle difficoltà.
Questa è la tabella:



Tratta tutti i giocatori che hanno segnato nel nostro campionato:
abbiamo l'id del marcatore, id partita, l'id del giocatore, l'id della squadra, il minuto, un flag (0-1) se la rete è un autogol, un flag(0-1) se la rete è un rigore.

adesso dalla tabella sto cercando di estrarre l'id del giocatore che ha fatto più reti in una stessa squadra togliendo di fatto gli autogol dal computo totale
ho pensato e ripensato ma ogni query non mi dà il risultato atteso

Potete darmi una mano?

Grazie

28 Risposte

  • Re: Query "semplice"

    Ciao,

    prova così :
    
    
    SELECT count(id_marcatore) AS GolFatti, id_marcatore, squadra
    FROM dati
    WHERE autogol=false
    GROUP BY id_marcatore, squadra;
    
    
    un saluto.
  • Re: Query "semplice"

    Grazie mille intanto,
    Purtoppo non và ...anche perché id marcatore e un indice autoincrementante e quindi poco a che fare con la query.

    Ho fatto qualche cambiamento e mi mostra tutti i giocatori con il numero delle reti.
    Ma a me serve il giocatore che ha fatto più reti oppure se ci sono 2 o 3 a pari merito mi servono gli id di quei giocatori lì.

    Cmq è il campo giocatore che espone l'id del giocatore e la squadra perché mi server il bomber della squadra.

    Cmq ho caricato l'immagine della tabella quindi puoi capire meglio...
    Grazie

    Ciao
  • Re: Query "semplice"

    Ciao,
    non vorrei che mancando l'ordinamento il risultato sia fuorviante :
    
    SELECT Count(id_marcatore) AS GolFatti, id_marcatore, squadra
    FROM dati
    WHERE autogol=False
    GROUP BY dati.id_marcatore, dati.squadra
    ORDER BY Count(id_marcatore) DESC , squadra;
    
    la query viene risolta mostrando il risultato voluto.
    non funziona, ci dici...? che risultato ottieni?
    un saluto.
  • Re: Query "semplice"

    Come ti ho già scritto prima l'id marcatore è un contatore di tutte le reti segnate quindi centra poco.
    il campo giocatore è quello che mi serve.

    "a me serve il giocatore che ha fatto più reti oppure se ci sono 2 o 3 a pari merito mi servono gli id di quei giocatori lì."
    
    SELECT Count(giocatore) AS GolFatti, giocatore
    FROM segnature_2
    WHERE autogol=0 and squadra=6
    GROUP BY giocatore
    ORDER BY Count(giocatore) DESC;
    
    ho modificato la query che mi hai dato te, ma così mi fa vedere tutti i giocatori che hanno segnato.
    Io voglio l'id del giocatore che ha segnato di più in una stessa squadra e se ne abbiamo due con le stesse reti devo prendere entrambi e così via.

    avevo provato a fare max(Count(giocatore)) ma le aggregazioni multiple access non me le fa fare..
    Mi sa che se continua così mi devo prendere tutti i marcatori e farmi il controllo sul programma.

    Grazie,
    Ciao
  • Re: Query "semplice"

    Ciao,
    se la tabella che mostri, Segnature_2 il campo giocatore identifica il giocatore che ha segnato il gol, e relativo minuto, dovrebbe essere sufficiente modificare così' :
    
    SELECT Count(giocatore) AS GolFatti, giocatore, squadra
    FROM dati
    WHERE autogolFalse
    GROUP BY giocatore, squadra
    ORDER BY Count(giocatore) DESC , squadra;
    
    
    se così non è, mostraci sulla base dei dati che mostri, il risultato che vuoi ottenere...altrimenti non ne usciamo ....
    ciao.
  • Re: Query "semplice"

    Ciao.
    La squadra la scelgo io tramite codice.
    Hai visto la mia query?!
    dovrebbe simile a quella.

    Più di come ho spiegato non so cosa fare....

    Fai finta che abbiamo delle statistiche.
    E in questa statistiche spunta il capocannoniera di una SQUaDRA BEN DETERMINATA perché la scelgo io
    
    //mia query
    SELECT Count(giocatore) AS GolFatti, giocatore
    FROM segnature_2
    WHERE autogol=0 and SQUADRA=6
    GROUP BY giocatore;
    
    Metti che nelle statistiche di quella ben determinata squadra abbiamo Ronaldo che ha fatto 40 gol e il secondo mettiamo Benzema ne ha fatti 39 entrambi giocatori del real MAdrid con codice 6 (come nella query)
    Ecco io devo prendere il capocannoniera di quella DETERMINATA squadra, quello che ha fatto più gol, quindi nel mio caso Ronaldo
    Invece se Ronaldo e Benzema hanno fatto entrambi 40 gol io devo prenderli entrambi.

    Guarda più semplice di così non so come spiegarmi davvero.
  • Re: Query "semplice"

    Però se non mostri TUTTE le tabelle coinvolte non è che possiamo indovinarle da soli, non trovi?
    Mostra i dati e la struttura come hai fatto con la segnature_s.
  • Re: Query "semplice"

    Di Tabella c'è ne solo una coinvolta e la struttura è mostrata sopra l'immagine della tabella...
    cmq posto la struttura...

    idmarcatore Numerico autoincrement
    partita numerico idpartita
    giocatore numerico idgiocatore
    squadra numerico idsquadra
    minuto Testo perché devo gestire cose del tipo 90'+2 per tempi recupero
    autogol numerico (0/1)
    rigore numerico (0/1)
  • Re: Query "semplice"

    Una possibilità è la seguente:
    - Dalla tua query crei un'altra query dove inserisci solo il campo GoalFatti, crei il raggruppamento e nella formula scegli max;
    - Crei un'altra query basato sulle suddette due query e metti in relazione i campi GoalFatti e MaxDiGoalFatti, scegli i campi della tua query che vuoi visualizzare.
    In questo modo dovresti visualizzare quello che chiedi.
  • Re: Query "semplice"

    Si ma il max che vado a fare è su un ID quindi non posso mettere in relazione il numero di elementi trovati nella tabella (nell'immagine in alto, il primo post, puoi benissimo vedere) con l'id del giocatore che ha fatto più gol...
  • Re: Query "semplice"

    Il max lo devi fare sul campo Count(giocatore) AS GolFatti della tua query per sapere il numero massimo di goal fatti.
  • Re: Query "semplice"

    L'ho scritto prima che ho già fatto questa prova e access mi dà un problema di multipla aggregazione...boh

    Inviato dal mio GT-I9100 con Tapatalk 2
  • Re: Query "semplice"

    Prova a rileggerti il mio primo post con attenzione,
    Devi crearti un'altra query e non farlo nella stessa query.
    Per farlo nella stessa query dovresti creare una query nidificata che è più complessa.
  • Re: Query "semplice"

    schumy2000 ha scritto:


    Di Tabella c'è ne solo una coinvolta e la struttura è mostrata sopra l'immagine della tabella...
    OK, gli esempi di altri mi hanno tratto in inganno, e non vedendo i nomi dei giocatori...

    Comunque, prova questa:
    SELECT TOP 1 Count(giocatore) AS GoalFatti, giocatore 
    FROM segnature_2 
    GROUP BY giocatore  
    ORDER BY Count(giocatore) DESC
Devi accedere o registrarti per scrivere nel forum
28 risposte