Foros del Web » Programando para Internet » PHP »

Contar resultados por id de una consulta

Estas en el tema de Contar resultados por id de una consulta en el foro de PHP en Foros del Web. Hola amigos! ¿De que forma podría contar los resultados de una consulta por id? Tengo la siguiente consulta @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original $ventas ...
  #1 (permalink)  
Antiguo 13/09/2013, 16:09
 
Fecha de Ingreso: agosto-2013
Ubicación: Cuernavaca
Mensajes: 27
Antigüedad: 10 años, 7 meses
Puntos: 0
Contar resultados por id de una consulta

Hola amigos!

¿De que forma podría contar los resultados de una consulta por id?

Tengo la siguiente consulta

Código PHP:
Ver original
  1. $ventas = mysql_query("SELECT * FROM ventas WHERE (MONTH(fecha)=".$mes." AND YEAR(fecha)=".$anio.") AND estado=1 AND id_edificio=".$edificio."") or die(mysql_error());
  2.      
  3. while($id_ventas = mysql_fetch_array($ventas)){
  4.   $id_usuarios[] = $id_ventas['id_usuario'];
  5.  }

Con esto pretendo tomar todos los id de usuarios que cuentan con estos aspectos. Hasta aquí todo funciona bien

Ahora lo que necesito es que con me cuente el número total de resultados por id.

Osea que si el id de usuario 15 tiene 3 resultados me arroje 15 = 3 y el id 16 tuvo 2 me arroje 2 y así sucesivamente

de que forma lo podría hacer???
  #2 (permalink)  
Antiguo 13/09/2013, 16:12
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 15 años, 11 meses
Puntos: 528
Respuesta: Contar resultados por id de una consulta

Esto no es problema de php si no de consultas. Busca información sobre group by
  #3 (permalink)  
Antiguo 13/09/2013, 16:17
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Contar resultados por id de una consulta

Es SQL básico:
Código SQL:
Ver original
  1. SELECT COUNT(*) totalPorEdificio
  2. FROM ventas
  3. WHERE MONTH(fecha)= $mes
  4.     AND YEAR(fecha) = $anio
  5.     AND estado=1
  6.     AND id_edificio= $edificio
Si sólo quieres lo de ese edificio, o si quieres por edificio:
Código SQL:
Ver original
  1. SELECT id_edificio, COUNT(*) totalPorEdificio
  2. FROM ventas
  3. WHERE MONTH(fecha)= $mes
  4.     AND YEAR(fecha) = $anio
  5.     AND estado=1
  6. GROUP BY id_edificio
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 13/09/2013, 17:29
 
Fecha de Ingreso: agosto-2013
Ubicación: Cuernavaca
Mensajes: 27
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Contar resultados por id de una consulta

Bueno lo logré hacer con un count(*) y group by

Código PHP:
Ver original
  1. $ventas = mysql_query("SELECT count(*), id_usuario FROM ventas WHERE (MONTH(fecha)=".$mes." AND YEAR(fecha)=".$anio.") AND estado=1 AND id_edificio=".$edificio." GROUP BY id_usuario") or die(mysql_error());
  2.  
  3. while ($resultados = mysql_fetch_array($ventas)){
  4.   $lugar = 1;
  5.   echo "<tr>
  6.            <td>".$lugar++."</td>
  7.         <td>".$resultados[1]."</td>
  8.         <td>".$resultados[0]."</td>
  9.         </tr>";
  10. }

De esta forma logré colocar mis resultados así

USUARIO 15 - 2 ventas
USUARIO 1 - 1 venta
USUARIO 3 - 3 ventas

¿Existe la forma de ordenar el count(*) para que mi resultado sea:

USUARIO 3 - 3 ventas
USUARIO 15 - 2 ventas
USUARIO 1 - 1 venta
  #5 (permalink)  
Antiguo 13/09/2013, 17:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: Contar resultados por id de una consulta

Es preferible cargar las consultas en una variable. Ayuda a visualizarlo ordenadamente:
Código PHP:
Ver original
  1. $qry = "SELECT ";
  2. $qry .= "    id_usuario, count(*) totalVentas ";
  3. $qry .= "FROM ventas ";
  4. $qry .= "WHERE MONTH(fecha)= $mes ";
  5. $qry .= "  AND YEAR(fecha)= $anio ";
  6. $qry .= "  AND estado=1 ";
  7. $qry .= "  AND id_edificio = $edificio ";
  8. $qry .= "GROUP BY id_usuario";
  9. $qry .= "ORDER BY totalVentas";
  10. $ventas = mysql_query($qry) or die(mysql_error());
  11.  
  12. while ($resultados = mysql_fetch_array($ventas)){
  13.   $lugar = 1;
  14.   echo "<tr>
  15.           <td>".$lugar++."</td>
  16.        <td>".$resultados[1]."</td>
  17.        <td>".$resultados[0]."</td>
  18.        </tr>";
  19. }
Otros consejos:
- No es necesario que pongas paréntesis para englobar las condiciones si todas son AND.
- No es necesario usar segmentación de las cadenas de la query, si los valores son simples.
- Ponle siempre alias a las columnas afectadas por funciones. Simplificará su llamado
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: mysql
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 03:20.