16 messaggi dal 17 aprile 2001
Lo sto postando un pò ovunque ma senza trovare nessuno tanto bravo:

Eccoci ancora a rinfrescarci la memoria sulle query sql e l'interrogazione via asp.

Allora: In un database ad ogni utente è associato un codice univoco che lo stesso utente utilizza per iscrivere altre persone (nella query lo chiameremo CAMPO)...
Interrogo il db per vedere quante persone sono state iscritte da questo qualcuno (o voglio una claassifica di color che hanno iscritto piu' persone):

select CAMPO, count(CAMPO) as xxx,
from TABELLA
group by CAMPO
order by xxx desc

Funziona tutto perfettamente, ma c'è qualcuno (che potrebbe meritare l'oscar per l'interrogazione sql e asp!!!) a in grado di far visualizzare, anzichè il campo "CAMPO", il nome ed il cognome dell'utente?

Rocordo che Nome, Cognome, e CAMPO, risiedono nella stesa TABELLA.

Spero di poter assegnare l'OSCAR!!!!
189 messaggi dal 26 marzo 2001
Prova così

select CAMPO, count(CAMPO) as xxx, Nome, Cognome
from TABELLA
group by CAMPO, Nome, Cognome
order by count(CAMPO) desc

No ho la struttura del db sotto mano però ho fatto una cosa simile(classifica dei 10 utenti con più messaggi) nella message board che sto realizzando.
Se non funziona potresti mandarmi il modello del db per email così riesco a provare: OasisAD@Libero.it

Ciao

16 messaggi dal 17 aprile 2001
Prescindendo dal fatto che rispondere ad un post - in questo forum - è un casino (non esiste un comando RISPONDI semplice), purtroppo la tua query non restituisce un risultato corretto.

Ho già provato ad aggiungere nome e cognome nel group by, solo che a quel punto i dati vengono anche raggruppati per nome e cognome e il numero di iscritti per ogni "promoter" non è più corretto!

La query da me indicata restituisce i valori giusti, solo che poi devo associare - ad ogni CAMPO, il nome e cognome corrispondenti.

Non posso inviarti parte del database per ovvie ragioni di privacy degli abbonati (per quanto pochi!), ma ho bisogno di risolvere il problema velocemente.

Spero tu possa aiutarmi ugualmente, Grazie
839 messaggi dal 13 febbraio 2001
Le domandi che ti poni sono due diverse, comunque se non posti la struttura delle tabelle (in particolare per come hai legato gli iscritti a coloro che fanno iscrivere), solo gli indovini potranno aiutarti.
Ciao
Paolo
16 messaggi dal 17 aprile 2001
Hai ragione... il database è così strutturato:

Per maggiore chiarezza farò degli esempi pratici con nomi inventati... dove a CAMPO corrisponde, in realtà il codice UserID della persona che mi ha fatto iscrivere al servizio.

Nome.....Cognome.....UserID...CAMPO

Mario.......Rossi............a123a
Paolo.......Bruni............b456b.....a123a
Marco.......Bianchi........v235v......a123a
Ugo..........Solo.............g526g......a123a

Come si vede nel campo CAMPO (che in realtà si chiama UserPromoter) compare l'UserID di chi ci ha fatto iscrivere. Tale campo compare soltanto per coloro che sono stati iscritti da quanlcun'alto e risulta vuoto per coloro che non sono stati iscritti da nessuno ma si sono iscritti autonomamente.
A questo punto voglio sapere quanti PROMOTERS ci sono nel mio database (per la verità mi servono solo i primi 3, per cui utilizzerò anche il comando top3...), ed effettuo la seguente query:

select CAMPO, count(CAMPO) as numero_iscritti,
from TABELLA
group by CAMPO
order by numero_iscritti desc

Questa query mi fa ottenere ciò che volevo e cioè:

CAMPO.....numero_iscritti
a123a.......3

Vedo perciò che, in questo caso, ho solo un promoter che ha userid a123a e che ha iscritto 3 persone (come si può ben controllare in alto). Il problema è che io vorrei che al posto di a123a venissero visualizzati il nome ed il cognome di a123a.

Questo è il problema.
Se non vi siete persi fino a qui, e avete capito qual'è il problema.... siete tanto bravi da risolverlo?

Fatemi sapere...

Ho postato questa descrizione anche su altri forum e, almeno, hanno capito di cosa parlavo... :-(
839 messaggi dal 13 febbraio 2001
Ehi, uomo di poca fede, prendi carta e penna e scrivi:

1. Nel mio db Access ho una tabella Utenti con i campi:
-UserID
-Cognome
-Nome_
-UserPromoter
e ci metto un po' di dati di prova.

2. Nello stesso db creo una query di nome
"ConteggioPromoters" e ci ricopio questa clausola SQL:
<pre id=code><font face=courier size=2 id=code>
SELECT Count(UserPromoter) AS Promoters
FROM Utenti;
</font id=code></pre id=code>

3. Sempre nel db Access creo una query di nome
"TopPromoters" e ci ricopio questa clausola SQL:
<pre id=code><font face=courier size=2 id=code>
SELECT TOP 3 Utenti.UserID AS UserID, Utenti.Cognome AS Cognome, Utenti.Nome_ AS Nome, Count(Utenti_1.UserID) AS Promozioni
FROM Utenti INNER JOIN Utenti AS Utenti_1 ON Utenti.UserID = Utenti_1.UserPromoter
GROUP BY Utenti.UserID, Utenti.Cognome, Utenti.Nome_
ORDER BY Count(Utenti_1.UserID) DESC;
</font id=code></pre id=code>

4. Provo ad eseguire le query e vedo che funzionano. OHHHH.

5. In blocco note ricopio questo script:
<pre id=code><font face=courier size=2 id=code>

&lt;%
set cnn=Server.CreateObject("ADODB.Connection")
set rst=Server.CreateObject("ADODB.Recordset")

strCnn="provider=Microsoft.Jet.OLEDB.4.0;data source=..."

cnn.Open strCnn
rst.Open "[ConteggioPromoters]", cnn

nPromoters=0
if not rst.EOF then
nPromoters=rst.Fields("Promoters")
response.write "Il numero di promoters è " & nPromoters & "&lt;BR&gt;"
else
response.write "Non vi sono promotori"
end if

rst.close

if nPromoters &gt; 0 then
strSQL="[TopPromoters]"
rst.open strSQL, cnn
if not rst.EOF then
response.write "I promotori sono " & "&lt;BR&gt;"
do until rst.EOF
response.write rst.Fields("UserID") & ": " & rst.Fields("Cognome") & " " & rst.Fields("Nome") & " " & rst.Fields("Promozioni")& " &lt;BR&gt;"
rst.movenext
loop
end if
end if
rst.close
cnn.close
set rst=nothing
set cnn=nothing
%&gt;
</font id=code></pre id=code>

6. Inserisco il database corretto nella stringa di connessione

7. Lo salvo e lo provo tramite web. (è gia testato)

8. Mo cospargo la testa di cenere e prometto
di non inserire mai più un topic con quella descrizione.

Ciao!
Paolo

Modificato - pdb on 21 Apr 2001 18:37:30

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.