Ver Mensaje Individual
  #7 (permalink)  
Antiguo 22/05/2009, 09:54
Avatar de DooBie
DooBie
 
Fecha de Ingreso: septiembre-2004
Mensajes: 1.101
Antigüedad: 20 años, 2 meses
Puntos: 71
Respuesta: Liado con SELECT.... JOIN....

Cita:
Iniciado por Genetix Ver Mensaje
Prueba Usando Left Join
Código sql:
Ver original
  1. SELECT
  2.    c.categoria ,
  3.    COUNT(*) productos
  4. FROM tbl_categorias c LEFT JOIN tbl_productos p ON c.id = p.id_categoria
  5. ORDER BY c.categoria
  6. 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
  1. SELECT tbl_categorias . * , COUNT( * ) productos
  2. FROM tbl_categorias
  3. LEFT JOIN tbl_productos ON tbl_categorias.id = tbl_productos.id_categoria
  4. GROUP BY tbl_categorias.id
  5. ORDER BY tbl_categorias.id ASC
  6. 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
  1. SELECT tbl_categorias . * , COUNT( tbl_productos.id ) productos
  2. FROM tbl_categorias
  3. LEFT JOIN tbl_productos ON tbl_categorias.id = tbl_productos.id_categoria
  4. GROUP BY tbl_categorias.id
  5. ORDER BY tbl_categorias.id ASC

Última edición por DooBie; 22/05/2009 a las 10:16 Razón: Problema solucionado