Newsgroup: it.comp.lang.visual-basic
Titolo: asp

Ciao a tutti, ho un problema...
Spero possiate aiutarmi: ho una query che mi conta un certo numero di musei
in base al crtiterio scelto dall'utente (es. la provincia), il problema č
che i musei sono di diverso tipo, es. naturalistico, etnografico, storico...
e non ho un campo per identificare il tipo di museo, ma ho dei campi
chekati, il problema č che non so come fare per far contare i musei di un
dato dipo...
Non so se mi sono spiegata...
Spero comunque in un vostro aiuto, ciao!
Monica

Forse converrebbe canbiare la struttura dell'archivio... ma comunque.
Se vuoi contare i musei solo di un certo tipo basta che imposti una clausola
WHERE.
Se vuoi invece vuoi contare i musei per tutti i tipi puoi usare un trucco
che consiste nel impostare un'espressione per ogni campo check che
restituisce 1 se e' vero e 0 se non e' vero e quindi sommi questi campi.
Non so se si riesce a fare con una query unica o se bisogna farlo con 2
query. Prova un po'.
Ciao
Antonio Donatiello
MONIQUE ha scritto:


Prova con la questa query
Select Count(NOME_MUSEO)
From TABELLA_MUSEI
Where CHEK_STORICO = 1 And
            CHEK_ETNOGRAFICO = 1 And
             PROVINCIA = MI
Spero di essere stato chiaro ma senza la descrizione della tabella è
difficile essere più precisi.
Se utilizzi Access come db controlla il valore del count con il null in
quanto access restituisce comunque una linea per le funzione (es:Count )
ancyhe se nella tabella non esisteun reord che soddisfi la condizione
desiderata

E' un pň complessa ma prova cosě :
SELECT Musei.Prov,
    Sum(IIf([storico]<>0,1,0)) AS MuseiStorici,
    Sum(IIf([naturalistico]<>0,1,0)) AS MuseiNaturali,
    Sum(IIf([scienze]<>0,1,0)) AS MuseiScienze
FROM Musei
GROUP BY Musei.Prov
HAVING (((Musei.Prov)="RM"));
In ogni caso ti conviene cambiare la struttura, puoi lasciare l'interfaccia
grafica immutata, che suppongo abbia dei checkbox, e controllare la
memorizzazione dei dati con un ciclo sui controlli.
CIAO.
-------------------------------------
Francesco Picchi

Vi ringrazio tutti, ora provo le varie soluzioni!
CIAO!
Monica

Posso mandarti il codice?
Io lavoro in HTML, ma uso asp per agganciarmi ai db..
Eccolo:
<%
Set objConnection = server.CreateObject("ADODB.Connection")
Set rstemp=Server.CreateObject("ADODB.Recordset")
connectme="DSN=museo"
TxtProvincia= Request.Form("TxtProvincia")
Call RaddoppiaApiciProvincia
SQLQuery = "select count (*) as numero from musei where provincia like '%" &
TxtProvincia & "%' "
rstemp.open SQLQuery, connectme
rstemp.MoveFirst
Numero=rstemp("numero")
%>
<p>TROVATI <%response.write(numero)%>MUSEI.</p>
In questo primo pezzo la select mi restituisce il numero totale dei musei
trovati, io però vorrei li suddividesse nei vari tipi qundi ho usato la tua
soluzione:
<%SQLQuery ="Select provincia, sum(iif([Storico]<>0,1,0)) AS
MuseiStorici,sum(iif([Naturalistico]<>0,1,0)) AS
MuseiNaturali,sum(iif([Artistico]<>0,1,0)) AS MuseiArtistici"
SQLQuery =SQLQuery + "From musei"
SQLQuery =SQLQuery + "Group by Provincia"
SQLQuery =SQLQuery + "where provincia like '%" & TxtProvincia & "%' "
%>
senza nessun risultato però... in output ricevo solo il risultato della
prima select..
mentre io vorrei TROVATI 10 MUSEI , 5 STORICI, 5 NATURALISTICi
come fare???? SOS!
Ciao, Monica

Ciao Antonio, ti ringrazio per il consiglio, ma mi spiegheresti meglio cosa
intendi?
Non sono molto pratica di query....
Grazie! Monica

Purtroppo non funziona...
La tabella è composta da vari campi, tra cui Nome, Città, Provincia,
Telefono (di tipo testo), Archeologico, Artistico, Naturalistico (di tipo
chek).
Io ho fatto una prima query che mi restituisce il numero totale dei musei in
base alla provincia digitata dall' utente, poi ho applicato una seconda
query (la tua) per contare i musei di vario tipo, in modo che come risultato
si abbia:
Trovati 10 musei, di cui 3 storici, 2 naturalistici, 5 artistici.
Ma purtroppo non funziona e non so come fare....
PS: ma si possono applicare due query separatamente, nello stesso codice? Io
lavoro in Html, ma uso asp per agganciarmi ai db....e come avrai capito non
sono molto brava!

...


Modifica la stringa SQL così:
SELECT Musei.Prov,
                   Sum(IIf([storico]<>0,1,0)) AS MuseiStorici,
                   Sum(IIf([naturalistico]<>0,1,0)) AS MuseiNaturalistici,
                   Sum(IIf([scienze]<>0,1,0)) AS MuseiSienze,
                   Count(Musei.nome) AS TotaleMusei
FROM Musei
WHERE (((Musei.Prov) like 'RM'))
GROUP BY Tabella1.Prov;
CIAO.
---------------------------------
Francesco Picchi