Cita:
Iniciado por Genetix Prueba Usando Left Join
Código sql:
Ver originalSELECT
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 originalSELECT 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 originalSELECT 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