Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
[Access] Ricavare un determinato valore di un campo di una tabella
martedì 17 maggio 2011 - 16.23
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Riemann
Profilo
| Newbie
7
messaggi | Data Invio:
mar 17 mag 2011 - 16:23
Ciao a tutti!
Supponiamo di avere Tabella2 con i campi: Giorno (di tipo data) e C (di tipo numerico). Vorrei:
• Selezionare n valori del campo C (da Data1 a Data2), ordinandoli in modo crescente, e
• Ricavare il valore di posizione j (j=1,…,n) dalla suddetta serie ordinata di valori
Facendo delle ricerche nella guida di Access, inserendo la parola TOP, ho trovato:
“Predicati ALL, DISTINCT, DISTINCTROW, TOP (linguaggio SQL per Microsoft Access)”
riguardo TOP c'è un esempio su come ricavare i primi j valori di un recordset ordinato:
SELECT TOP j C
FROM Tabella2
WHERE Giorno BETWEEN Data1 AND Data2
ORDER BY C ASC
Il predicato TOP non è in grado di scegliere tra valori uguali, cioè se il j-esimo e il
(j+1)-esimo coincidono, la query restituirà j+1 record.
Ma comunque basterebbe ricavare il valore massimo del recordset ottenuto...
però non saprei come fare...
Non saprei se il predicato TOP sia il metodo giusto per risolvere il problema o se
ci siano metodi migliori… voi come lo risolvereste?
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
mar 17 mag 2011 - 16:27
per avere il valore massimo di c puoi scrivere così :
SELECT TOP j max(C) as massimoc
FROM Tabella2
WHERE Giorno BETWEEN Data1 AND Data2
ORDER BY max(C) ASC
non so se ti basta
DINOXET
__________________________________________
impossible is only a word
Riemann
Profilo
| Newbie
7
messaggi | Data Invio:
mar 17 mag 2011 - 20:52
Ciao Dinoxet, grazie dell'aiuto. Con il codice che mi hai postato mi risulta il massimo di C,
però io vorrei il j-esimo valore della serie ordinata (in modo crescente) dei valori di C.
Faccio un esempio con j = 3 :
6 - 2 - 4 - 11 - 9 - 13 - 7 --> valori del campo C
2 - 4 - 6 - 7 - 9 - 11 - 13 --> serie ordinata (in modo crescente) dei valori di C
2 - 4 - 6 --> TOP 3
6 --> 3° valore della serie ordinata (che corrispone al massimo valore di TOP 3)
Spero che sia abbastanza chiaro il problema...
dinoxet
Profilo
| Senior Member
484
messaggi | Data Invio:
mer 18 mag 2011 - 09:21
prova così :
select max(massimoc) as totptop
from(
SELECT TOP j max(C) as massimoc
FROM Tabella2
WHERE Giorno BETWEEN Data1 AND Data2
ORDER BY max(C) ASC)
vedi se va bene
DINOXET
__________________________________________
impossible is only a word
Riemann
Profilo
| Newbie
7
messaggi | Data Invio:
mer 18 mag 2011 - 14:17
Ciao grazie Dinoxet, il tuo codice mi da ancora il massimo di C, però mi hai dato uno spunto per trovare la soluzione:
SELECT Max(C) AS maxtopj
FROM (SELECT TOP j C
FROM Tabella2
WHERE Giorno BETWEEN Data1 AND Data2
ORDER BY C ASC)
Torna su
Stanze Forum
Elenco Threads
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 !