Newsgroup: it.comp.appl.access
Titolo: Classifica migliori atleti e non punteggi migliori

Ciao a tutti,
Ho un programma VB (ultimamente ho fatto anche una interfaccia ASP) per
gestire un database di atletica leggera.
Uso Access 2000.
Per semplificare, ho le seguenti tabelle: Athletes, Competitions e
Scores.
Se voglio ottenere la classifica dei migliori punteggi, chiamo questo
comando SQL:
[1]SELECT TOP <how-many-best> AthleteName, Competitiondate,
CompetitionPlace, Score
FROM Scores INNER JOIN Competitions ... INNER JOIN Athletes ...
ORDER BY Score [DESC]
([DESC] e' presente se i punteggi sono in tempi, se sono lungezze no)
Comincio ad avere problemi quando vogio classificare i migliori atleti.
Se aggiungo un parametro "group by Athletename", non sono in grado di
visualizzare Competitiondate, CompetitionPlace perche non fanno parte di
alcuna "aggregate function". :-(
Cioe' posso solo scrivere:
---
[2a]SELECT TOP <how-many-best> AthleteName, Min(Score)
FROM Scores INNER JOIN Competitions ... INNER JOIN Athletes ...
GROUP BY AthleteName
ORDER BY Min(Score)
per risultati in tempi
[2b]SELECT TOP <how-many-best> AthleteName, Max(Score)
FROM Scores INNER JOIN Competitions ... INNER JOIN Athletes ...
GROUP BY AthleteName
ORDER BY Max(Score)
per risultati in lunghezze
---
Come posso fare, che comando SQL posso usare per visualizzare tutti i
campi della SQL [1], ma con i criteri di selezione della SQL [2]?
Grazie.
Saluti,
Irene
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 campi della SQL [1], ma con i criteri di selezione della SQL [2]?
Fammi capire meglio, in questo modo tu hai tutti i dati che ti occorrono o
sbaglio ?
SELECT
AthleteName,
Competitiondate,
CompetitionPlace,
Max(Score) AS MaxDiScore
FROM Competitions INNER JOIN
(Athletes INNER JOIN Scores ON Athletes.[ID_ Athletes] = Scores.AthletesID)
ON Competitions.ID_Competitions = Scores.CompetitionsID
GROUP BY
AthleteName,
Competitiondate,
CompetitionPlace;

 CompetitionPlace;
Ho gia'  provato, ma in questo modo perdo l'unicita' dell' Athetname,
cioe' lo stesso atleta compare tranquillamente piu' volte.
Potrebbe essere una limitazione dell' SQL dell' Access2000?


 Potrebbe essere una limitazione dell' SQL dell' Access2000?
LAST(Competitiondate) AS ...,  LAST(CompetitionPlace) AS ...

 wrote in message
news:Jdjdb.130976$
hE5.4...@news1.tin.it

Purtroppo, no: non funziona ne' con LAST ne' con FIRST. 
D'altra parte perche` dovrebbe? Chi l'ha detto che il il primo/ultimo
record di quel AthleteName
e' proprio il min(Score) [o Max(score) a seconda del tipo di
competizione] dell' atleta stesso?
Ho anche provato a creare una query del tipo:
SELECT Name,First(Score),First(CompetitionDate),First(CompetitionTime)
FROM [Best results]
GROUP BY Name
dove Best Results e' una query gia' ordinata per risultati
crescenti/descrescenti:
SELECT Name,CompetitionDate,CompetitionPlace,Scores
FROM Scores ...
ORDER BY scores
ma non funziona neanche questo. Ed in questo caso, non capisco neanche
come mai!
Fa differenza chiamare una query da un'altra query e creare una vera e
propria tabella temporanea in Access?


 competizione] dell' atleta stesso?
scusa ma hai usato contemporanemente MAX e LAST  ??
SELECT Athletes.AthleteName, Last(Competitions.Competitiondate) AS
UltimoDiCompetitiondate, Last(Competitions.CompetitionPlace) AS
UltimoDiCompetitionPlace, Max(Scores.Score) AS MaxDiScore
FROM Competitions INNER JOIN (Athletes INNER JOIN Scores ON Athletes.[ID_
Athletes] = Scores.AthletesID) ON Competitions.ID_Competitions =
Scores.CompetitionsID
GROUP BY Athletes.AthleteName;
questo funziona...

 questo funziona...
Certo che ho provato Max e Last assieme. Forse funziona nel tuo caso
specifico.
Ho spedito al tuo indirizzo email un piccolissimo access database dove
si vede che non funziona o meglio:
nomi e punteggi sono OK ma la data ed il luogo della gara corrispondono
ad un altro record.
Piu precisamente all' ultimo record di quell' altleta nel database, non
al record col miglior risultato.
Ciao
Irene


 Uso Access 2000.
Per la cronaca, ho ricevuto questo indirizzo:
http://www.mvps.org/access/queries/qry0020.htm
Dove ho risolto * quasi * tutti i miei problemi. A dire la verita' ho
ancora un paio
di complicazioni dovute alla maggiore complessita' del mio database in
confronto a quello della pagina web dove
si parla di una libreria. 
Ma se mai apriro' un altro post per queste ultime questioni.
Grazie dell'aiuto.
