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