Access: Query "facile"

venerdì 17 gennaio 2014 - 11.11
Tag Elenco Tags  Access (.mdb)

schumy2000 Profilo | Junior Member

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:

989x470 52Kb


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:
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.
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.
-------------------------------------------------------------------------------------------------------------
Talvolta un pensiero mi annebbia l'Io: sono pazzi gli altri o sono pazzo io?
A. Einstein

dinoxet Profilo | Senior Member

Prova così :
Select giocatore,max(bomber) as big_bomber
from(
SELECT giocatore,count(giocatore) as bomber
FROM Segnature_2
WHERE Squadra=6 AND Rigore=1 AND autogol=0
group by giocatore) as segnature



DINOXET
__________________________________________
impossible is only a word

schumy2000 Profilo | Junior Member

Non va....
mi ritorna un errore del tipo:
"Impossibile eseguire una query che non include l'espressione giocatore specificata come parte di una funzione aggregata"

Quindi ho provato a mettere group by giocatore ma come al solito mi ritorna i due record

207x61 3Kb


Ma a me interessa un solo record...
sembrava una stupidaggine ho fatto query ben più complicate di queste ma non riesco a venirne a capo

-------------------------------------------------------------------------------------------------------------
Talvolta un pensiero mi annebbia l'Io: sono pazzi gli altri o sono pazzo io?
A. Einstein

dinoxet Profilo | Senior Member

ha ragione :

Prova così :
Select giocatore,max(bomber) as big_bomber
from(
SELECT giocatore,count(giocatore) as bomber
FROM Segnature_2
WHERE Squadra=6 AND Rigore=1 AND autogol=0
group by giocatore) as segnature
groupo by giocatore
DINOXET
__________________________________________
impossible is only a word

schumy2000 Profilo | Junior Member

Ti avevo scritto che avevo già provato così, ma non và mi ritorna due record.

Ciao.

-------------------------------------------------------------------------------------------------------------
Talvolta un pensiero mi annebbia l'Io: sono pazzi gli altri o sono pazzo io?
A. Einstein

dinoxet Profilo | Senior Member

Select top(1) giocatore,max(bomber) as big_bomber
from(
SELECT giocatore,count(giocatore) as bomber
FROM Segnature_2
WHERE Squadra=6 AND Rigore=1 AND autogol=0
group by giocatore) as segnature
groupo by giocatore
order by big_bomber disc

L'idea è di ordinarlo in maniera discendente e con il top(1) selezionare solo il primo.

DINOXET
__________________________________________
impossible is only a word

schumy2000 Profilo | Junior Member

beh allora anche così si può fare:

SELECT TOP 1 (giocatore),count(giocatore) as bomber FROM Segnature_2 WHERE Squadra=6 AND Rigore=1 AND autogol=0 group by giocatore ORDER BY count(giocatore) DESC

senza appesantire la query.
speravo ci fosse qualcosa che mi potesse favorire senza particolari sotterfugi.
in più non mi serve prendere il primo record, perché se ci sono due persone a pari merito in fatto di reti devo prendere entrambi....

Grazie ugualmente.
Ciao.
-------------------------------------------------------------------------------------------------------------
Talvolta un pensiero mi annebbia l'Io: sono pazzi gli altri o sono pazzo io?
A. Einstein

schumy2000 Profilo | Junior Member

up
-------------------------------------------------------------------------------------------------------------
Talvolta un pensiero mi annebbia l'Io: sono pazzi gli altri o sono pazzo io?
A. Einstein
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5