Newsgroup: it.comp.appl.access
Titolo: creare query basata su campo a valore max

Ciao.
Premetto che di Access 2007 non so tanto (e zero di VB), quindi anche
il titolo del topic potrebbe essere non calzante con la mia esigenza.
Scusatemi.
Semplificando al massimo, ho una tabella con questi campi: Cognome,
Nome, Istruzione (in realtï¿œ i campi sono molti di piï¿œ e giacenti su 4
tabelle relazionate, ma forse non cambia ai fini della soluzione del
mio problema).
Il valore che assume il campo "istruzione" ï¿œ esattamente questo:
"1" (indica licenza di scuola elementare)
"2" (indica diploma di scuola media)
"3" (indica diploma di scuola superiore)
"4" (indica laurea breve triennale)
"5" (ndica laurea quinquennale)
Mi devo creare un report che mi elenchi i nominativi che hanno come
MASSIMO grado di istruzione il valore "3" cioï¿œ scuola superiore.
Visto che nella query usando i filtri per valore
campo "uguale a" non ottengo lo scopo (perchï¿œ chi ha la laurea "5" ï¿œ
ovvio che ha anche il diploma "3"!) come posso ottenere un'output
coerente con la mia esigenza?
Esempio:
- Pippo ha studiato fino alla laurea, nel database trovo cinque record 
(uno per ogni titolo di studio);
- Pluto ha studiato fino alla scuola media, nel database trovo 3 record
Devo fare una query (con i campi indicati all'inizio del topic) che mi 
indichi come risultato chi ha il campo "Istruzione" valorizzto al 
massimo come "5" : quindi mi deve comparire SOLO Pluto.
Per favore, se possibile affermazioni  .... semplici e
dettagliate   :-)
Grazie
Giorgio

 dettagliate   :-)
Nella tua query devi attivare i Totali. Nella vis. struttura della query
si trovano nella sezione Mostra/Nascondi del Ribbon "Struttura" e
hanno il segno di una somma. Quindi fai clic su questo pulsante.
Adesso nella griglia della query vedi una riga "Formula" dove come
standard � scelto "Raggruppamento". Nella colonna del campo
"istruzione" cambia la formula a "Max". Poi puoi usare p.e. 5 come
criterio per solo avere Pluto nel risultato.
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 
ok, applicato. In Formula ora appare "max" e in criteri ho aggiunto "5" 
(entrambi senza apici)
Ma la query mi restituisce TUTTI quelli che hanno "5" e quindi anche Pippo.
????
Giorgio

> massimo come "5" : quindi mi deve comparire SOLO Pluto.
Se qui intendevi 3, certo devi scrivere 3 come criterio, non 5.
-- 
cu


 Se qui intendevi 3, certo devi scrivere 3 come criterio, non 5.
Uff..... ormai ho i neuroni stressati :-|
Si', ï¿œ come dici tu. Ho fatto casino, non considerare le mie....query 
precedenti!
Riepilogo:
Pippo ha fatto fino alla laurea (5), quindi ï¿œ presente in cinque record 
(1,2,3,4,5)
Pluto fino alla terza media (2) quindi ï¿œ presente in due record (1,2)
fatto sta che se inserisco max, 2 mi escono entrambi, invece io ho 
bisogno che esca solo  Pluto.
?
SCUSAMI :-(
Giorgio

 ...
Forse la tua query non sia come l'ho provato di descrivere.
Per farci vedere la differenza: vai alla visualizzazione SQL della query
e copia/incolla l'enunciato SQL nel tuo prossimo messaggio qui.


 
PRima ero in confusione, ora ï¿œ follia pura...... Comunque eccola qui
SELECT ANAGRAFE.COGNOME, ANAGRAFE.NOME, Max(ISTRUZIONE.[codice 
istruzione]) AS [MaxDicodice istruzione], ISTRUZIONE.descrizione
FROM ISTRUZIONE INNER JOIN (ANAGRAFE INNER JOIN raccorod ON 
ANAGRAFE.[tessera] = raccorod.[tessera]) ON ISTRUZIONE.[codice 
istruzione] = raccorod.[codice istruzione]
GROUP BY ANAGRAFE.COGNOME, ANAGRAFE.NOME, ISTRUZIONE.descrizione
HAVING (((Max(ISTRUZIONE.[codice istruzione]))=2));

 HAVING (((Max(ISTRUZIONE.[codice istruzione]))=2));
Ok, non vedo un errore. In principio ti deve dare solo
i nomi che hanno 2 come valore massimo nel campo
ISTRUZIONE.[codice istruzione].
Se non ti d� il risultato desiderato ci potrebbe essere un problema
con il collegamento delle tre tabelle, con il campo usato nel HAVING
o con i dati. Questo puo sapere solo tu.
