Newsgroup: it.comp.appl.access
Titolo: First() e Last(); ordine casuale...

..salve a tutti,
sto provando a barcamenarmi con un problema ma non ne vengo proprio
fuori...sicuramente per qualcuno di voi sara' una banalita'!!
in pratica ho una query di raggruppamento con
- un campo nome-cognome (primo criterio di ordinamento)
- molti campi Somma relativi ad altri campi numerici della tabella
originale
- un campo PROGR con un numero progressivo associato a ciascun record
(tutti numeri compresi tra 1 e 10, diversi tra loro se riferiti a
record relativi alla stessa persona) da gestire (count? last o first?
ecc.)
- un campo NR (quello critico) contenente un numero, compreso tra 0 e
99, che puo' essere diverso per ogni record o ripetersi, senza alcuna
regola
essenzialmente io vorrei come risultato della query UNA riga per ogni
nome e cognome, con la sua bella lista di somme ed un campo in cui
compare l'ULTIMO dei numeri contenuti in NR ordinati per PROGR...
ho provato in vari modi ma vado a tentoni, o mi si pianta oppure
ottengo di visualizzare nel campo Last(NR) un numero a caso tra quelli
associati al nome e non quello che e' effettivamente l'ultimo.Insomma
non so come ordinare i record PRIMA che venga selezionato l'ultimo
numero...non so se mi spiego
Ditemi che sto trascurando un dettaglio banale e che sono un po'
pirla!
Grazie
A
--	   
             ***** on line  since 1993 *****
www.bhsa.it
                                 ICQ#44021136

 A
-- 
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

usi una funzione di aggregazione sui dominii.
capisco...o meglio, intuisco... mi puoi fare o indicare un esempio??


 ha scritto nel messaggio
news:l04pl05ag117smatl...@4ax.com...

Se la tabella che contiene i dati si chiama Tabella1 ed ha una struttura
simile a questa:
ID                            Contatore e chiave primaria
Nome_Cognome     Testo
Quantità                   Numerico
Importo                   Valuta
PROGR                   Numerico
NR                          Numerico
Se vuoi creare una query di raggruppamento su Nome_Cognome che sommi
Quantità ed importo e visualizzi il NR relativo al PROGR più alto di quel
Nome_Cognome,  Prova con una query di raggruppamento che abbia il seguente
codice SQL:
SELECT Nome_Cognome, Sum(Quantità) AS SommaDiQuantità, Sum(Importo) AS
SommaDiImporto, Val(DLookUp("NR","Tabella1","ID =" &
Val(DLookUp("ID","Tabella1","nome_Cognome=" & Chr$(34) & [Nome_Cognome] &
Chr$(34) & " And PROGR=" & Val(DMax("PROGR","Tabella1","nome_Cognome=" &
Chr$(34) & [Nome_Cognome] & Chr$(34))))))) AS UltimoNR
FROM Tabella1
GROUP BY Nome_Cognome;


GROUP BY Nome_Cognome;
sei stato gentilissimo ma non riesco ad implementarla, anche perche'
si aggiungono problemi di sintassi visto che ho bisogno di collegarmi
al db Access via pagina ASP... tra virgolette semplici e inglesi il
rischio di incasinarsi e' alto.
ritentero', grazie ancora cmq


una cosa di questo tipo in una stringa SQL in ASP (problem di sintassi
con le virgolette semplici-inglesi) puo' avere senso??
le tabelle sono GIOCATORI e STATS
ho ripulito la stringa dalle cose superflue (molti campi somma e nome
e cognome)... il campo NUMERO e' l'NR di cui parlavo, il PROGR e'
ProgrLocale... spero si capisca qualcosa
sql="SELECT
Val(DLookUp('Numero','STATS','IDStagione='&Val(DLookUp('IDStagione','STATS','Giocatore='[Giocatore]
And
ProgrLocale='&Val(DMax('ProgrLocale','STATS','Giocatore='[Giocatore]))))))
AS UltimoNR, Stagione.Stagione, Squadra.SquadraI Sum(STATS.Penalitą)
AS Penalitą, Sum(STATS.Goals) AS Goals FROM GIOCATORI RIGHT JOIN
(Stagione RIGHT JOIN (Squadra RIGHT JOIN STATS ON Squadra.IDSquadra =
STATS.Squadra) ON Stagione.IDStagione = STATS.Stagione) ON
GIOCATORI.IDplayer = STATS.Giocatore) GROUP BY Stagione.Stagione,
Squadra.SquadraI, STATS.Giocatore HAVING
((Squadra.SquadraI)="&SquadraFiltro&") ORDER BY Giocatore"
ciao
A



Mi dispiace, ma non conosco ASP e quindi non posso esserti d'aiuto.


 ritentero', grazie ancora cmq
Non mi sembra che tu avessi scritto che dovevi operare in ambiente ASP; se
lo avessi saputo non ti avrei risposto visto che non conosco ASP.


lo avessi saputo non ti avrei risposto visto che non conosco ASP.
non l'ho specificato cmq mi sei lo stesso stato d'aiuto: mi hai aperto
un mondo nuovo con quel tipo di approccio :-)
ad ogni modo la stragrande maggioranza della stringa SQL resta
identica in ASP!
grazie cmq


lo avessi saputo non ti avrei risposto visto che non conosco ASP.
non l'ho specificato cmq mi sei lo stesso stato d'aiuto: mi hai aperto
un mondo nuovo con quel tipo di approccio :-)
ad ogni modo la stragrande maggioranza della stringa SQL resta
identica in ASP!
grazie cmq


lo avessi saputo non ti avrei risposto visto che non conosco ASP.
non l'ho specificato cmq mi sei lo stesso stato d'aiuto: mi hai aperto
un mondo nuovo con quel tipo di approccio :-)
ad ogni modo la stragrande maggioranza della stringa SQL resta
identica in ASP!
grazie cmq


Ritorno a farmi sentire. Ho provato l'approccio con subquery (che
avevo usato pochissimo) e mi pare di essere sulla strada giusta... 
SELECT ....(vari campi aggregati della tabella STATS).... , 
	(SELECT Last(LastNR) FROM 
		(SELECT Last(STATS_2.Numero) AS LastNR
FROM STATS AS STATS_2  GROUP BY  ProgrLocale, STATS_2.Stagione,
STATS_2.Squadra, STATS_2.Giocatore HAVING ((STATS_2.Stagione=117) And
(STATS_2.Squadra=3) And (STATS_2.Giocatore=STATS.Giocatore))
ORDER BY ProgrLocale)) 
	AS Numero,
 ...altri campi..., FROM
...vari join... ON GIOCATORI.IDplayer=STATS.Giocatore) ON ...altri
join...
GROUP BY Stagione.SeqStag, Stagione.Stagione, Squadra.SquadraI,
GIOCATORI.IDplayer, GIOCATORI.Cognome, GIOCATORI.Nome HAVING
(((Stagione.SeqStag)=57) And ((Squadra.SquadraI)='Bolzano HC'))
ORDER BY Cognome, Nome;
Sostanzialmente il mio problema e' la correlazione della sottoquery
piu' interna con quella principale: il campo STATS.Giocatore deve
essere uguale a STATS_2.Giocatore.
Eseguendo la query cosi' com'e' mi cbiede di inserire il valore
STATS.Giocatore, invece di prenderlo dalla query principale...
Se invece al posto di STATS.Giocatore metto un certo valore -relativo
ad un particolare giocatore- il tutto funziona ma naturalmente mi
visualizza lo stesso numero -e' il numero della maglia- per tutti i
giocatori, mentre lo scopo e' trovare il corretto numero di maglia per
ciascun giocatore... 
ho trovato un esempio simile online, ma non ha due subquery
nidificate: e' questo il problema? non saprei impostare la stringa
senza la doppia sottoquery...
..suggerimenti??
grazie


...ce l'ho fatta cambiando completamente approccio, alla fine ho fatto
un join di due query aggregate (una con subquery). Ho scoperto che non
si possono fare sottoquery correlate dentro un FROM, quindi ho dovuto
ripensare il tutto. Cosi' e' anche molto piu' efficiente.
ciao
