Newsgroup: it.comp.appl.access
Titolo: Query con Conteggio

Salve avrei il seguente problema
in una tabella ho tre campi di tipo Si/no:
Campi:
Falegname
Muratore
Tornitore
Meccanico
Dovrei fare una query che tiri fuori una tabella del tipo:
Falegnami: 12
Muratori: 2
Tornitori: 5
Muratori e Falegnami: 3  ( persone che siano contemporanemante muratori e 
faleganmi)
In pratica dovrei conteggiare i campi di tipo si/no che sono spuntati
ma non riesco a venirne fuori

 ha scritto nel messaggio
news:J8Fke.1431877$35.53...@news4.tin.it...


 ha scritto nel messaggio 
news:tLFke.1432154$35.53...@news4.tin.it...

Non funziona
In pratica ho aperto in viisualizzazione struttura una query
ho trascinato i vari campi e poi come ultimo campo
ho aggiunto.   Muratori: Somma([Muratore])*-1
come suggerito ... Access visualizza un errore

 ha scritto nel messaggio
news:J8Fke.1431877$35.53...@news4.tin.it...

E una query che restituisca un'unica riga contenente i 4 campi con i 4
totali potrebbe andare bene lo stesso?
-- 
Roberto
-----------------------------------------------------
il Sito Comune di it.comp.appl.access
http://www.sitocomune.com
----------------------------------------------------

 ha scritto nel 
messaggio news:yfGke.24439$795.7...@twister1.libero.it...

Ovvero?

 Ovvero?
Falegnami    Muratori    Tornitori    Meccanici
    12                2                5                3


 ha scritto nel 
messaggio news:7zIke.24719$795.7...@twister1.libero.it...

Ok ma come impostarla?

 Ok ma come impostarla?
Se la tabella che contiene i dati i chiama Tabella1 ed ha una struttura
simile a questa:
ID                 Contatore e chiave primaria
Nominativo    Testo
Falegname     Si/No
Muratore       Si/No
Tornitore       Si/No
La query di raggruppamento che ti restituisce i 4 totali in una sola riga ha
il seguente codice SQL:
SELECT Sum(IIf([Falegname]=True,IIf([Muratore]=False,1,0),0)) AS
SoloFalegnami, Sum(IIf([Falegname]=False,IIf([Muratore]=True,1,0),0)) AS
SoloMuratori, Sum(IIf([Tornitore]=True,1,0)) AS Tornitori,
Sum(IIf([Falegname]=True,IIf([Muratore]=True,1,0),0)) AS FalegnamiMuratori
FROM Tabella1;
Se poi vuoi proprio avere i 4 totali in verticale, su quattro righe
distinte, prova con una query che abbia il seguente codice SQL:
SELECT Pippo.Mestiere, Sum(Pippo.Numero) AS Numero
FROM [SELECT ID, 1 AS Espr1, "Solo falegnami" AS Mestiere, 1 AS Numero
FROM Tabella1
WHERE (((Falegname)=True) AND ((Muratore)=False))
UNION SELECT ID, 2 AS Espr1, "Solo muratori" AS Mestiere, 1 AS Numero
FROM Tabella1
WHERE (((Falegname)=False) AND ((Muratore)=True))
UNION SELECT ID, 3 AS Espr1, "Tornitori" AS Mestiere, 1 AS Numero
FROM Tabella1
WHERE Tornitore=True
UNION SELECT ID, 4 AS Espr1, "Falegnami e Muratori" AS Mestiere, 1 AS Numero
FROM Tabella1
WHERE (((Falegname)=True) AND ((Muratore)=True));]. AS Pippo
GROUP BY Pippo.Mestiere;


 FalegnamiMuratori FROM Tabella1;
Mi pare più semplice:
SELECT ABS(SUM(Falegname)) AS Falegnami,
ABS(SUM(Muratore)) AS Muratori,
ABS(SUM(Tornitore)) AS Tornitori FROM Tabella1;
HTH.
Alessandro

 Alessandro


 In pratica dovrei conteggiare i campi di tipo si/no che sono spuntati
Avevo perň in effetti omesso di conteggiare le persone che sono
contemporanemante muratori e falegnami.
SELECT ABS(SUM(Falegname)) AS Falegnami,
ABS(SUM(Muratore)) AS Muratori,
ABS(SUM(Tornitore)) AS Tornitori,
(SELECT COUNT(*) FROM Tabella1 WHERE
  Falegname=True AND Muratore=True) AS MuratoriFalegnami
FROM Tabella1;
Mi sfugge da dove tu abbia desunto che volesse contare i falegnami che non
sono anche muratori, ecc. (forse mi sono perso qualche post). Nel caso,
ovviamente, la tua soluzione č probabilmente la migliore.
Alessandro

 Alessandro
-- 
