Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Contar varias columnas en un Select con Php

Estas en el tema de Contar varias columnas en un Select con Php en el foro de Mysql en Foros del Web. El planteamiento es el siguiente, en una tabla tengo el nombre del proyecto, el Estado donde esta ubicado y su status de ejecucion que puede ...
  #1 (permalink)  
Antiguo 18/12/2007, 12:48
 
Fecha de Ingreso: mayo-2004
Ubicación: Av. FFAA, Caracas
Mensajes: 29
Antigüedad: 20 años
Puntos: 0
Pregunta Contar varias columnas en un Select con Php

El planteamiento es el siguiente, en una tabla tengo el nombre del proyecto, el Estado donde esta ubicado y su status de ejecucion que puede ser: en contruccion, contruido, entregado, sin iniciar.

Entonces se requiere saber por Estado cuantos proyectos hay asignados y cuantos estan construidos, en contruccion, ejecutados, etc...

Con este query trato de saber cuantos hay asignados por estado y cuantos hay en construccion pero solo me da la cantidad en construccion=3 ya que las columnas que tienen count da el mismo numero de registros:

SELECT c.id AS id_proyecto,
d.region AS region,
a.estado AS estado,
count(*) AS cantidad_asignada,
count(*) AS en_construccion
FROM jos_proyectos AS c
LEFT JOIN jos_estados AS a ON a.id = c.estado
LEFT JOIN jos_regiones AS d ON d.id = c.region
WHERE edo_ejecucion=3
GROUP BY c.estado
ORDER BY d.id

Si hay alquien que pueda ayudarme se lo agradeceria... o como podria realizar este reporte via php o mysql...
  #2 (permalink)  
Antiguo 18/12/2007, 14:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Contar varias columnas en un Select con Php

Pasa a Count el nombre de la columna que quieres agrupar.

Tema trasladado a MySQL.
  #3 (permalink)  
Antiguo 18/12/2007, 20:27
 
Fecha de Ingreso: mayo-2004
Ubicación: Av. FFAA, Caracas
Mensajes: 29
Antigüedad: 20 años
Puntos: 0
Re: Contar varias columnas en un Select con Php

Lo intente de la manera siguiente y nada, las 2 columnas me muestran el mismo valor...

SELECT c.id AS id_proyecto,
a.estado AS estado,
count(c.estado) AS cantidad_asignada,
count(c.edo_ejecucion) AS en_construccion
FROM jos_proyectos AS c
LEFT JOIN jos_estados AS a ON a.id = c.estado
WHERE c.edo_ejecucion=3
GROUP BY c.estado
ORDER BY a.id
  #4 (permalink)  
Antiguo 19/12/2007, 17:02
Avatar de pragone  
Fecha de Ingreso: diciembre-2007
Ubicación: Madrid
Mensajes: 223
Antigüedad: 16 años, 4 meses
Puntos: 2
Re: Contar varias columnas en un Select con Php

Prueba así si quieres (aunque yo quitaría el left join... pero es cuestión de cuánto performance necesites)

SELECT c.id AS id_proyecto,
a.estado AS estado,
count(*) AS cantidad,
FROM jos_proyectos AS c
LEFT JOIN jos_estados AS a ON a.id = c.estado
GROUP BY c.estado
ORDER BY a.id

El problema "conceptual" es que quieres conseguir la información en dos columnas... esto te lo devuelve en fila por estado y proyecto.
Si realmente necesitas que haya una columna por estado, entonces usa el IF
http://dev.mysql.com/doc/refman/5.0/es/control-flow-functions.html
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:23.