De donde han salido los impuestos? Nada no importa.
Lo que no conseguiras es el condicional que dices, "si no hay productos de la categoria que me de los de las categorias hijas" para ello tendrias que programar que se ejecute una consulta que de los productos de la categoria padre y si no da resultados otra consulta que de los de las categorias hijas.
Lo que si se puedes conseguir es que te de todos los productos de la propia categoria y de todas las hijas de primer nivel, pero creo que no es lo que te intersa...
Código:
SELECT DISTINCT tienda_productos.ProdNombre
FROM (tienda_productos
LEFT JOIN tienda_impuestos
ON tienda_productos.Id_impuesto = tienda_impuestos.Id_impuesto)
WHERE tienda_productos.CatId =" & variableCatId &" OR
tienda_productos.CatId IN
(SELECT Tienda_Cats.CatId
FROM Tienda_Cats
WHERE Tienda_Cats.CatParentId=" & variableCatId &");
esto creo que te dara todos los productos que tengan la categoria escogida y los de las categorias del nivel immediatamente inferior, claro que si en el segundo nivel de categorias tampoco tienes productos no veras los del tercer nivel...
Quim