Visualizzazione dei risultati da 1 a 10 su 10

Discussione: Query "semplice"

  1. #1

    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
    pensavo ad una query del genere:
    codice:
    
    
    codice:
    SELECT max(count(giocatore)) as bomber
    FROM Segnature_2
    WHERE Squadra=6 AND Rigore=1 AND autogol=0


    solo che questa non gli va bene ritornando un messaggio di errore del tipo:

    access impossibile avere una funzione di aggregazione (max(count(giocatore)))

    ho fatto così ma anche questa non gli va bene.
    codice:
    
    
    codice:
    SELECT max (
    SELECT COUNT(K.GIOCATORE)
    FROM FROM Segnature_2 K
    WHERE S.Squadra=K.Squadra AND S.Rigore=K.Squadra AND S.Autogol=K.Squadra
    GROUP BY K.GIOCATORE) 
    FROM Segnature_2 S
    WHERE S.Squadra=6 AND S.Rigore=1 AND S.Autogol=0
    

    e con questa mi ritorna errore di sintassi.

    Potete darmi una mano?

    Grazie.
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  2. #2
    ce vogliamo indicare il db come richiesto dal regolamento?

  3. #3
    Giusto scusa.
    Uso Access al momento, pensavo dall'immagine si intuisse...
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  4. #4
    Fai un paio di query:
    1)
    SELECT giocatore, squadra, Count(giocatore) AS ConteggioDigiocatore
    FROM segnature_2
    WHERE segnature_2.autogol="0"
    GROUP BY giocatore, squadra;

    La salvi con un nome qualunque, ad esempio "Query", poi scrivi la seconda query:
    2)
    SELECT First(giocatore) AS PrimoDigiocatore, Max(ConteggioDigiocatore) AS MaxDiConteggioDigiocatore
    FROM Query

  5. #5
    Grazie per la tua risposta...
    Però io non devo prendere solo il primo risultato.
    Se io ho due giocatori a "pari merito" (tot reti a testa) io devo prenderli tutti e due e non solo il primo.

    Ciao,
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  6. #6
    Però questa cosa non l'avevi detta; procedi cosi:
    La seconda query diventa:

    SELECT First(giocatore) AS PrimoDigiocatore, Max(ConteggioDigiocatore) AS MaxDiConteggioDigiocatore
    FROM Query

    ...e la salvi come Query2, poi scrivi una terza query:

    SELECT Query.giocatore, Query.ConteggioDigiocatore AS gol_totali
    FROM Query INNER JOIN Query2
    ON Query.giocatore = Query2.MaxDiConteggioDigiocatore

  7. #7
    Veramente in questo modo non prendo alcun record....
    non pensavo fosse così complicato...
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  8. #8
    up
    I computer sono incredibilmente veloci, accurati e stupidi.
    Gli uomini sono incredibilmente lenti, inaccurati e intelligenti.
    Insieme sono una potenza che supera l'immaginazione.

    A.Einstein

  9. #9
    l'idea di fare 2 query e' corretta. Poi con access viene molto facile.

    La prima query :

    SELECT COUNT(*) AS CONTO
    FROM tabella
    GROUP BY(SQUADRA)

    E poi la seconda query fai solo max della prima query
    Non si può risolvere un problema usando lo stesso modo di pensare che ha creato quel problema.
    Albert Einstein

    Siate Affamati, siate Folli, siate Onesti e siate Generosi

  10. #10
    Robba fantascientifica... se può piacere e se non avete ancora risolto....

    codice:
    SELECT * FROM
    (
    SELECT MAX(SUM_GOL) AS MAX_GOL FROM (
    SELECT sum(Segnature_2.rigore) AS SUM_GOL
    FROM Segnature_2
    where Autogol=0
    group by Segnature_2.giocatore
    )) A, (
    SELECT Segnature_2.giocatore, sum(Segnature_2.rigore) AS SUM_GOL
    FROM Segnature_2
    where Autogol=0
    group by Segnature_2.giocatore
    ) B
    WHERE B.SUM_GOL>=A.MAX_GOL
    Ciao
    Mik

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.