#########NEW################### time 0,20 sec
select famiglia, descrizione_famiglia, sum(nrprodotti) as occorrenze
from
(
select webarticoli.famiglia, webarticoli.descrizione_famiglia, count(*) as nrprodotti
from webarticoli
where webarticoli.settore = '3'
group by webarticoli.famiglia, webarticoli.descrizione_famiglia
UNION
select soci_webarticoli.famiglia, soci_webarticoli.descrizione_famiglia, count(*) as nrprodotti
from soci_webarticoli
where soci_webarticoli.idcliente = 50 and soci_webarticoli.settore = '3'
and (soci_webarticoli.codicecdr = '' or soci_webarticoli.codicecdr is NULL)
group by soci_webarticoli.famiglia, soci_webarticoli.descrizione_famiglia
UNION
select webarticoli.famiglia, webarticoli.descrizione_famiglia, (count(*) * -1) as nrprodotti
from webarticoli
inner join soci_codicinascosti
on webarticoli.codart = soci_codicinascosti.codart
where soci_codicinascosti.idcliente = 50
group by webarticoli.famiglia, webarticoli.descrizione_famiglia
)
as fake__
group by famiglia, descrizione_famiglia order by descrizione_famiglia
#########NEW###################
#########OLD################### time 17 sec
select famiglia, descrizione_famiglia , sum(occorrenze) as ArticoliPresenti
from
(
select famiglia, descrizione_famiglia, count(*) as occorrenze
from webarticoli
where settore= '3'
and (codart <> all (select codart from soci_codicinascosti where idcliente=50 and (codart <> '' and not isnull(codart))))
and (codart <> all (select codicecdr from soci_webarticoli where idcliente=50 and (codicecdr <> '' and not isnull(codicecdr)))) group by famiglia, descrizione_famiglia
UNION
SELECT soci_webarticoli.famiglia, soci_webarticoli.descrizione_famiglia, count(*) as occorrenze
FROM soci_webarticoli
INNER JOIN webarticoli
ON soci_webarticoli.CodiceCDR = webarticoli.CodArt
WHERE soci_webarticoli.IDCliente=50 and soci_webarticoli.settore = '3'
group by soci_webarticoli.famiglia, soci_webarticoli.descrizione_famiglia
union
select famiglia, descrizione_famiglia, count(*) as occorrenze
from soci_webarticoli
where IDCliente =50 and settore= '3'
and (codicecdr = '' or isnull(codicecdr))
group by famiglia, descrizione_famiglia
)
as fake_qry group by famiglia, descrizione_famiglia order by descrizione_famiglia;
#########OLD###################