Newsgroup: it.comp.www.asp
Titolo: Errore su group by

campiDef = "Enti.ID_Nominativo AS 
CODICE,Enti.Ragione_Sociale,Enti.Indirizzo,Enti.Citta,Enti.CAP,Enti.Provincia,Enti.Data_cal,Enti.Attivita,Enti.Descrizione2,Enti.ID_Tipologia, 
Enti.TELEFONO, Enti.FAX, Enti.EMAIL, 'DEF' AS STATO, Enti.BLOCCO, 
Enti_Contatti.Email_Personale "
 if not request("ordinamento") = "" then
  ordine = " ORDER BY " & trim(request("ordinamento"))
 end if
 'costruisco la query per il clienti
 sqlDef = " SELECT " & campiDef & " FROM Enti LEFT JOIN Enti_Contatti ON 
Enti.ID_Nominativo = Enti_Contatti.ID_Nominativo " & target_where
 sql = sqlDef
' imposto il gruppo
 gruppo = " GROUP BY Ragione_Sociale "
' imposto l'ordinamento
 sql = sql & " " & gruppo & " " & ordine
l'errore č dovuto a GROUP BY
e questo č l'errore:
Tipo di errore:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
[Microsoft][Driver ODBC Microsoft Access] Impossibile eseguire una query che 
non include l'espressione "CODICE" specificata come parte di una funzione di 
aggregazione.

 funzione di aggregazione.
Ciao Claudia,
Quando esegui un raggruppamento mediante la clausola GROUP BY devi 
necessariamente specificare TUTTE le colonne della select list alle quali 
non hai applicato una funzione di aggregazione.
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
 

 aggregazione.
sei OT, qua si parla di asp, non di linguaggio sql...
Devi studiarti come funziona il group by, per esempio
 
http://www.databasedev.co.uk/sql-group-by.html
(quindi, per esempio, max(CODICE) as CODICE)
-- 
"That until there is no longer first class
And second class citizens of any nation
Until the colour of a man's skin
Is of no more significance than the colour of his eyes
Me say war"
B.M.

 l'errore č dovuto a GROUP BY
Occorrerebbe sapere cosa ti serve la query per capire come correggerla.
Una query con "GROUP BY" č di TOTALIZZAZIONE, non di selezione, e con
quell'errore Access ti ha detto che non sa cosa vuoi fare dei i campi
che non sono di raggruppamento (contarli, sommarli, estrarre il primo,
l'ultimo, il minore, il maggiore, la media -se sono numerici-, ecc.).
Ciao.
Mauro 

 ha scritto nel messaggio 
news:9KYBi.99965$%k.24...@twister2.libero.it...

Rispondo qua.
con questi campi:campiDef = "Enti.ID_Nominativo AS 
CODICE,Enti.Ragione_Sociale,...Enti_Contatti.Email_Personale "
io estraggo tutti i dati in cui all'interno hanno 
Enti_Contatti.Email_Personale
significa per per un ID_Nominativo posso avere da 1 a N righe in quanto č 
collegata la tabella enti_contatti
nel risultato mi trovavo n righe dello stesso ID_Nominativo replicato per N 
volte quante righe estratte da Enti_Contatti.Email_Personale
Quello che io volevo era:
ok che hai il dato, ok che puoi avere N righe perņ scrivi solo 1 riga che 
poi comunque con li link che mi ero creata andavo a vedere la pagina con 
tutti i dati,
non sapendo bene come funzionava GROUP BY credevo e mi ero sbagliata che 
potevo raggruppare
secondo voi come posso fare??

 secondo voi come posso fare??
Puoi raggruppare, ma devi specificare cosa fare di tutti i
campi, quindi (ad esempio) prendi il primo di ciascuno con
una First(...), ma ripeto, lo devi fare per TUTTI i campi.
Però se tanto poi "vai a vederteli" non ti servono tutti
questi campi. Metti solo il minimo (Codice e Nominativo)
e poi il resto lo tiri fuori solo nella query dei dettagli
(che però sarà di selezione, non di raggruppamento).
In ogni caso la soluzione più veloce è costruire la query
con Access, quando vedi che funziona ed è come ti serve
vai in visualizzazione "SQL" e la copi come testo in VB
(magari levando tutte le parentesi e le aggiunte inutili
gentilmente offerte dallo stesso Access).
Ciao.
Mauro 


questa era la soluzione che avevo prima, e andava benissimo, poi il capo mi 
ha detto di mettere un
Email:
Si <input name="mail" type="radio" value="1" checked>
No<input name="mail" type="radio" value="0" >
cioè di estrarre tutti i nominativi in cui nella tabella enti_contatti 
collegata da ID_Nominativo aveva o non aveva una mail
 if request("mail") = 1  then
  target_where = target_where  & " AND email_personale LIKE '%@%'"
 end if
ecco perche mi ritrovo comunque a raggruppare per id_nominativo
che consiglio mi dai?