Query per ottenere il totale degli articoli presenti nella categoria g...

mercoledì 28 settembre 2016 - 19.42

zseven Profilo | Senior Member

Salve ragazzi,
non riesco a risolvere la query descritta nell'oggetto.

In pratica abbiamo una tabella categorie strutturata in maniera gerarchica con IDCategoria ed id_parent sullo stesso rigo.
Per ogni categoria ho ancheun path del tipo
001
001.001
001.002
002

e così via per la varie categorie.

Il mio obiettivo è di ottenere un elenco di categorie e sottocategorie e mostrare nella categoria padre avente come path 001 la somma dei prodotti presenti nelle categorie figlie con path 001.001 e 001.002 e così via.
Le tabelle in questione sono tab_categorie e tab_prodotti_base.
Vi scrivo di seguito la create:
CREATE TABLE [dbo].[tab_categorie]( [ID_categorie] [int] IDENTITY(1,1) NOT NULL, [parent_categoria] [numeric](18, 0) NULL, [nome_categoria] [nvarchar](100) NULL, [foto_categoria] [nvarchar](100) NULL, [ordine_categoria] [int] NULL, [cartella_categoria] [bit] NULL, [novita_categoria] [bit] NULL, [visualizza_categoria] [bit] NULL, [elimina_categoria] [bit] NULL, [mpath] [nvarchar](21) NULL ) ON [PRIMARY] CREATE TABLE [dbo].[tab_prodotti_base]( [ID_prodotti_base] [int] IDENTITY(1,1) NOT NULL, [id_tree] [int] NOT NULL, [id_genere] [int] NOT NULL, [id_tipo] [int] NOT NULL, [id_marchio] [int] NOT NULL, [peso_prodotto_base] [numeric](18, 0) NULL, [elimina_prodotto_base] [bit] NULL ) ON [PRIMARY]

La query che ho scritto è questa:
SELECT nome_categoria, mpath, COUNT(tab_prodotti_base.ID_prodotti_base) AS TOTALEPRODOTTI FROM(( SELECT id_categorie, tab_categorie.nome_categoria, tab_categorie.mpath FROM tab_categorie WHERE elimina_categoria = 0 ) AS A LEFT JOIN tab_prodotti_base ON A.ID_categorie = tab_prodotti_base.id_tree) WHERE A.mpath LIKE mpath + '%' GROUP BY a.mpath, A.nome_categoria ORDER BY mpath ASC

che mi restituisce un valore corretto solo per i figli.
La categoria parent infatti mostra sempre ZERO come totale prodotti, anche se i relativi figli contengono prodotti.

Spero di essermi spiegato bene e che possiate aiutarmi.

Grazie mille
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5