Newsgroup: it.comp.appl.access
Titolo: COUNT

Ciao ho 2 tabelle: categorie e articoli
vorrei visualizzare per ogni categoria in tabella il numero di articoli di 
quella categoria che sono stati approvati:
ES: nomecategoria (numeroarticoli)
il problema è che non riesco a far vedere le categorie che non hanno 
articoli
la mia query è questa:
SELECT        categorie.categoria, COUNT(articoli.idarticolo) AS numart, 
categorie.idcategoria
FROM            (categorie LEFT OUTER JOIN articoli ON categorie.idcategoria 
= articoli.idcategoria)
GROUP BY categorie.idcategoria, categorie.categoria, articoli.approvato
HAVING        (articoli.approvato = - 1)
Grazie
Nik 

Le categorie che non hanno articoli non si vedono in quanto la
condizione "[approvato] = -1" le esclude.
Devi cambiare la having con la where aggiungendo la seguente funzione
condizionale che da -1 alle categorie senza articoli mentre alle altre
restituisce il valore di [approvato]:
IIf(IsNull([articoli].[idcategoria]),-1,[approvato]))=-1
SELECT        categorie.categoria, COUNT(articoli.idarticolo) AS
numart,
categorie.idcategoria
FROM            (categorie LEFT OUTER JOIN articoli ON
categorie.idcategoria
= articoli.idcategoria)
WHERE (((IIf(IsNull([articoli].[idcategoria]),-1,[approvato]))=-1))
GROUP BY categorie.idcategoria, categorie.categoria;
Riccardo



WHERE        articoli.approvato = - 1 Or articoli.idcategoria Is Null
GROUP BY categorie.idcategoria, categorie.categoria, articoli.approvato
-- 
HTH
Karl
*********
Access FAQ: 
www.donkarl.com/it
 

 Access FAQ: 
www.donkarl.com/it
Grazie. provo e vi aggiorno
Nik 

 ha scritto nel messaggio 
news:1191112331.8...@o80g2000hse.googlegroups.com...

Grazie Riccardo. Ma... le categorie sono 13, la tua query ne restituisce 
6!!!
avrò qualcosa di sbagliato in tabella?
Nik 


Ciao Karl
la tua query dà un errore risolto togliendo 'articoli.approvato' dalla 
clausola GROUP BY (non era nella select...)
ma come la query di Riccardo ne restituisce 6 invece di 13!!!
GRazie
Nik 

In sostanaza...
dopo un po di prove viene fuori questo:
se non ci sono articoli (ho pulito la tabella articoli) vedo tutte e 13 le 
categorie (ok)
se una categoria ha articoli non approvati, allora questa non compare in 
elenco...
(ho fatto la prova mettendo 8 articoli per una sola categoria tutti non 
approvati, risultato=12 categorie e manca proprio quella con gli articoli 
non approvati...)
Come è possibile?
Grazie ancora
Nik 


La where elimina le righe con approvato = 0 e quindi hai un certo numero 
di categorie eliminate poiche' approvato e' sempre false o 0 che dir si 
voglia
Io eliminerei la where e sostituirei la count con sum(abs(approvato))
In questo caso dovresti trovare le categorie che hanno non approvato a 
zero e quelle che non hanno articoli a null
-- 
ac
y-1=x

 zero e quelle che non hanno articoli a null
OK vedo tutte le 13 categorie (grazie)
ma adesso in quelle che non hanno articoli corrispondenti, il campo numart è 
NULL...
mumble mumble
cmq grazie
altro spunto di lavoro...
Nik 


Mi sembrava di averlo scritto
Categoria nArt: per le categorie con articoli approvati
Categori   0  : per le categorie con presenza di articoli e tutti non 
approvati
Categoria null: per categorie con assenza di articoli collegati
Cosa vuoi di piu' un lucano? (o una lucana?)
-- 
ac
y-1=x

 
La Lucana di sicuro... .-)
mo vedo come sostituire il valore null con uno zero
Grazie alessandro
Nik

Grazie a tutti (ho preso un pezzo di tutti)
la soluzione finale č:
SELECT        categorie.categoria, iif(isnull(SUM(ABS(articoli.approvato))), 
0, SUM(ABS(articoli.approvato))) AS numart, categorie.idcategoria
FROM            (categorie LEFT OUTER JOIN
                         articoli ON categorie.idcategoria = 
articoli.idcategoria)
GROUP BY categorie.idcategoria, categorie.categoria
e quindi risolto anche i valori NULL
Grazie e buonanotte
Nik