Cita: la cual me devuelve las categorias con y sin productos, peeeero (siempre hay un pero), las categorias que no tienen productos, me las devuelve con un valor de 'productos' erroneo, en lugar de 0 me devuelve un 1, y me he asegurado que esa categoria no tenga productos relacionados.
Eso es porque estás contando los registros de categorías, asumiendo que son productos y no es así. En ese caso tienes que determinar si son productos o NULL.
El tema se resuelve insertando en una subconsulta lo que estás haciendo ya, pero en vez de usar COUNT, hay que usar SUM():
Código sql:
Ver originalSELECT
campos,
SUM(productos) Productos
FROM
(SELECT
tbl_categorias . * ,
IF (P.id_categoria IS NULL, 0, 1) productos
FROM tbl_categorias C
LEFT JOIN tbl_productos P ON C.id = P.id_categoria) T1
GROUP BY id
ORDER BY id ASC
LIMIT 0 , 30
Detalles: Este método requiere
si o si que se indique por su nombre los campos que se desean recuperar.
No funciona de otra forma y no se puede hacer que funcione de otro modo si lo que quieres es que te devuelva cero (0) en esa columna.
Tip: Si quieres que se ordene en forma ascendente no es necesario quee pongas ASC, porque ese es el modo por default. Es redundante. Tienes que ponerlo si previo hay otro campo puesto como DESC.