Newsgroup: it.comp.appl.access
Titolo: Aiuto su query

Salve, io ho questo problema e mi affido a qualcuno del ng per risolverlo.
Dovrei fare una query su una tabella in modo tale da ottenere, data una
lista di valori (diciamo 10), i primi 4 che hanno il maggior valore.
 Per essere piu' chiaro il problema e':
ho una tabella con 4 campi: prodotto, nome anno e quantità(totale riferita a
ogni nome). Devo individuare per ciascun prodotto i nomi dei primi 5
individui che nel dato anno hanno effettuato maggiori vendite. Per ora,
tramite i raggruppamenti ho una query che me li indica tutti, ma come faccio
a imporre di visualizzare solo i primi 5?

 ha scritto nel messaggio
news:BkAg9.9257$eG6.1...@twister1.libero.it...

Parola chiave dell'SQL:
TOP
Antonio

 ha scritto nel messaggio
news:BkAg9.9257$eG6.1...@twister1.libero.it...

Se non conosci l'sql, nella struuttura della query imposti a "5"
dove ora hai "tutte" nel barra dei menu'.
--
Debora

Purtroppo non conosco sql, uso access a livello dilettante, ma grazie per le
dritte

 dritte
Va bene... però c'è anche l'help, che potresti andare a vedere appunto in
corrispondenza della parola top
Antonio

 ha scritto nel messaggio
news:NxBg9.9988$my3.1...@twister2.libero.it...

Antò, così facendo la query visualizzerà solo 5 record e non 5 record per
ogni prodotto.
O sbaglio?
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://www.sitocomune.com
---------------------------------------------

 ha scritto nel messaggio
news:BkAg9.9257$eG6.1...@twister1.libero.it...

Se i dati sono contenuti in una tabella chiamata Tabella1 che ha una
struttura simile a questa:
ID                Contatore e chiave primaria
Prodotto      Testo
anno             Numerico
Nome          Testo
quantità        Numerico
ecc. ecc.
Prova con una query che abbia il seguente codice SQL:
SELECT Tabella1.Prodotto, Tabella1.anno, Tabella1.Nome, Tabella1.quantità
FROM Tabella1
WHERE (((Val(DCount("*","Tabella1","Prodotto=" & Chr$(34) & [Prodotto] &
Chr$(34) & " And anno =" & [anno] & " And quantità >=" & [quantità])))<=5))
ORDER BY Tabella1.Prodotto, Tabella1.anno,
Val(DCount("*","Tabella1","Prodotto=" & Chr$(34) & [Prodotto] & Chr$(34) & "
And anno =" & [anno] & " And quantità >=" & [quantità]));
Se poi vuoi analizzare un anno alla volta, prova con una query che abbia il
seguente codice SQL:
SELECT Tabella1.Prodotto, Tabella1.anno, Tabella1.Nome, Tabella1.quantità
FROM Tabella1
WHERE (((Tabella1.anno)=[Digita l'anno vuoi analizzare:]) AND
((Val(DCount("*","Tabella1","Prodotto=" & Chr$(34) & [Prodotto] & Chr$(34) &
" And anno =" & [anno] & " And quantità >=" & [quantità])))<=5))
ORDER BY Tabella1.Prodotto, Val(DCount("*","Tabella1","Prodotto=" & Chr$(34)
& [Prodotto] & Chr$(34) & " And anno =" & [anno] & " And quantità >=" &
[quantità]));


 ha scritto nel messaggio
news:TGBg9.9400$eG6.1...@twister1.libero.it...

Non credo proprio che il problema si risolva usando la proprietà Primi
valori della query, a meno di analizzare solo un prodotto per un solo anno,
ma mi sembra che non è ciò che vuole Deep Blue.
Con la tua soluzione la query restituirebbe complessivamente 5 record e non
5 record per ogni prodotto e per ogni anno.


 O sbaglio?
Ah...
Mi sa che hai ragione.
Però a quel punto si potrebbero fare delle union di query di raggruppamento
ognuna con la sua top
Antonio

ok provo. cmq grazie un casino