Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/05/2009, 17:02
Gustavo77
 
Fecha de Ingreso: mayo-2009
Mensajes: 14
Antigüedad: 15 años, 10 meses
Puntos: 1
Respuesta: WHERE mal hecho?

Hola Vendetta como estas... me parece que el problema lo tenes en la utilizacion de los JOIN...
para ser exacto me parece que el tema esta en esta linea...

"INNER JOIN base_comentarios ON base_comentarios.des_id = base_desarrollo.id "

Al usar inner join le estas indicando al SQL que a ambos lados del igual deben existir datos... o sea tienen que exisitr registros en la tabla base_comentarios con algun id y tambien en base_desarrollo y ambos id deben ser iguales, si no encuentra un match entonces no trae registros...

Para ello puedes usar LEFT JOIN a cambio de Inner join, cuando le informas eso al SQL entonces solo basta con que se cumpla un solo lado de la igualdad, o sea basta con que exista en una sola de las tablas...

Tambien puedes utilizar Right Join, puedes profundizar con algun manual entre Left y Right (join)...

Tu consulta podria quedar algo asi


Código:
      SELECT base_desarrollo.id, base_desarrollo.project_id, base_desarrollo.fecha, base_desarrollo.titulo, base_desarrollo.autor, base_proyectos.proyecto, base_proyectos.url, IFNULL(COUNT(base_comentarios.des_id),0) total
        FROM base_desarrollo
       LEFT JOIN base_proyectos ON base_desarrollo.project_id = base_proyectos.id
       LEFT JOIN base_comentarios ON base_comentarios.des_id = base_desarrollo.id
       GROUP BY  base_desarrollo.id
       ORDER BY base_desarrollo.fecha DESC LIMIT 10;
Respecto de Group te cuento un poco por arriba como para darte una idea...

Hay consultas que trabajan con funciones como la que utilizas vos COUNT (que cuenta registros) pero tambien puede ser sum, max, min, etc...

Al trabajar con estas funciones debes indicarle al Sql cuales son los campos de corte deGrupo (por decirlo de alguna manera) ejemplo base_desarrollo

Usamos la funcion COUNT y queremos saber cuantos registros tenemos por autor

select count(base_desarrollo.id) as cantidad , base_desarrollo.autor from base_desarrollo
group by base_desarrollo.autor

pero si cambias el group podrias contar por otra cosa proba tambien esta mira

select count(base_desarrollo.id) as cantidad , base_desarrollo.fecha from base_desarrollo
group by base_desarrollo.fecha

Simplemente cambiando autor por fecha tenes la cantidad por fecha..

Espero que te sirva ...

Saludos