Cita:  
					Iniciado por Genetix  
  Prueba Usando Left Join
   
Código sql:
Ver original- SELECT 
-    c.categoria , 
-    COUNT(*) productos  
- FROM tbl_categorias c LEFT JOIN tbl_productos p ON c.id = p.id_categoria  
- ORDER BY c.categoria 
- GROUP BY c.categoria; 
Saludos!
   He probado con LEFT JOIN con la consulta anterior, y me devolvia los mismos datos, es decir, las categorias con 0 productos no me las daba y me he puesto a probar consultas hasta que he dado con esta:   
Código sql:
Ver original- SELECT tbl_categorias . * , COUNT( * ) productos 
- FROM tbl_categorias 
- LEFT JOIN tbl_productos ON tbl_categorias.id = tbl_productos.id_categoria 
- GROUP BY tbl_categorias.id 
- ORDER BY tbl_categorias.id ASC 
- LIMIT 0 , 30 
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. 
Tambien he probado con RIGHT JOIN e INNER JOIN y me pasa una de dos, o no me devuelve todas las categorias, o me las devuelve con datos erroneos. 
alguna idea? 
Edito: El problema estaba en el COUNT(*). Al final la consulta me ha quedado asi:   
Código sql:
Ver original- SELECT tbl_categorias . * , COUNT( tbl_productos.id ) productos 
- FROM tbl_categorias 
- LEFT JOIN tbl_productos ON tbl_categorias.id = tbl_productos.id_categoria 
- GROUP BY tbl_categorias.id 
- ORDER BY tbl_categorias.id ASC