Foros del Web » Programando para Internet » PHP »

Agrupar registros

Estas en el tema de Agrupar registros en el foro de PHP en Foros del Web. Hola Tengo el siguiente codigo: Código PHP: $result_p = mysql_query ( "select puntuacion,COUNT(puntuacion) from t_motivo  GROUP BY puntuacion" , $link );      while( $row  =  mysql_fetch_array ( $result_p )){     if( $row [ ...
  #1 (permalink)  
Antiguo 05/11/2012, 14:56
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Pregunta Agrupar registros

Hola Tengo el siguiente codigo:

Código PHP:
$result_p=mysql_query("select puntuacion,COUNT(puntuacion) from t_motivo  GROUP BY puntuacion",$link);     
while(
$row mysql_fetch_array($result_p)){
    if(
$row["puntuacion"]== 1)
    {
    
$puntuacion"Muy Bajo";
    }
    elseif(
$row["puntuacion"]== 2)
    {
    
$puntuacion"Bajo";
    }
    elseif(
$row["puntuacion"]== or $row["puntuacion"]== 4)
    {
    
$puntuacion"Moderado";
    }
    elseif(
$row["puntuacion"]>= 5)
    {
    
$puntuacion="Alto";
    }    
            echo 
"['".$puntuacion." - Total: ".$row['COUNT(puntuacion)'] ." ' ,"$row['COUNT(puntuacion)'] ."]";
            echo 
",";
            } 
Originalmente hace lo siguiente:

Los registros por puntuacion del 1 al 4 los coloca de esta forma

ID | puntuacion
1 | 2
2 | 3
3 | 5
4 | 10
5 | 1
6 | 1
8 | 2

Entonces sería:

Puntuacion: 1 = 2 registros
Puntuacion: 2 = 2 registros
Puntuacion: 3 y 4 = 1 registro (Pero si hubiese uno con 4 no lo agrupa sino q imprime otro registro)
Puntuacion: 5 y mayor que 5 = 2 registros (Pero imprime dos veces, deseo es que imprima una sola vez y cuente que hay 2 registros)

Espero puedan ayudarme.

Gracias
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #2 (permalink)  
Antiguo 05/11/2012, 15:24
 
Fecha de Ingreso: agosto-2006
Mensajes: 24
Antigüedad: 17 años, 8 meses
Puntos: 9
Respuesta: Agrupar registros

Prueba usando esto

Código PHP:
Ver original
  1. <?php
  2. $link = mysql_connect("localhost", "root", "");
  3. mysql_select_db("pruebas", $link);
  4.  
  5. $items = array( "n1" => "Muy Bajo",
  6.                 "n2" => "Bajo",
  7.                 "n34" => "Moderado",
  8.                 "n5" => "Alto");
  9.  
  10. $sql = "SELECT
  11.         (SELECT count(*) AS cant  FROM  t_motivo as tmp  WHERE puntuacion = 1) AS n1,
  12.         (SELECT count(*) AS cant  FROM  t_motivo as tmp  WHERE puntuacion = 2) AS n2,
  13.         (SELECT count(*) AS cant  FROM  t_motivo as tmp  WHERE (puntuacion = 3 OR puntuacion = 4)) AS n34,
  14.         (SELECT count(*) AS cant  FROM  t_motivo as tmp  WHERE puntuacion >= 5) AS n5
  15.         FROM t_motivo
  16.         LIMIT 0,1";
  17.        
  18. $result_p=mysql_query($sql, $link) or die (mysql_error());
  19. $row = mysql_fetch_array($result_p);
  20.  
  21. foreach ($items as $key => $puntuacion)
  22. {
  23.     echo "[$puntuacion - Total: {$row[$key]}]<br / >";
  24. }
  25.  
  26. ?>
  #3 (permalink)  
Antiguo 05/11/2012, 15:35
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: Agrupar registros

Código PHP:
function cantidadPuntos($puntuacion)
    {
        
$query mysql_query("SELECT ID FROM t_motivo WHERE puntuacion = '$puntuacion'");
        return 
mysql_num_rows($query);
    }
    
    
$puntuacionFinal = array();
    
    for (
$c 0$c <= 10$c++)
    {
        
$id cantidadPuntos($c);
        
$puntuacionFinal[] .= $id
        
        if ( 
$puntuacionFinal[$c] != 0)
        {
            echo 
'Puntuacion ' $c ': ' $puntuacionFinal[$c] .  ' Registros <br />';
        }
    } 
  #4 (permalink)  
Antiguo 05/11/2012, 15:39
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Respuesta: Agrupar registros

GRAAAACIASSS!!!! ahora tengo otra consulta tengo el mismo problema pero para relacionar edades:

Pongo el ejemplo aqui:

Código PHP:
Ver original
  1. $result_p=mysql_query("select fecha_nac,COUNT(fecha_nac) from t_paciente GROUP BY fecha_nac",$link);    
  2. while($row = mysql_fetch_array($result_p)){
  3.     if($row["fecha_nac"]==1)
  4.     {
  5.     $edad= "Menor de 18";
  6.     }
  7.     else{
  8.     $edad=$row["fecha_nac"];
  9.     }  
  10.             echo "['". $edad ." años <br/> Total:". $row['COUNT(fecha_nac)'] ."' ,". $row['COUNT(fecha_nac)'] ."]";
  11.             echo ",";
  12.             }

Mi problema es que quiero dividirlos o agruparlos por edades comprendidas:

<18 años
Entre 18 y 30 años
Entre 31 y 50 años
Entre 51 y 70 años
Entre 71 y 90 años

Los registros se cargan de la siguiente forma: no por fecha sino por INT

ID | fecha_nac

1|<18
2|22
3|40
4|60
5|18
6|18
7|20

Etc etc.

Aquí esta agrupando todos los que pertenezcan a la misma edad, pero como hago para agruparlos por edades comprendidas?

Gracias! si necesitan algo mas avisenme porfa.

MIL GRACIAS
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com
  #5 (permalink)  
Antiguo 05/11/2012, 16:05
 
Fecha de Ingreso: abril-2009
Ubicación: en un lugar de la mancha
Mensajes: 236
Antigüedad: 15 años
Puntos: 38
Respuesta: Agrupar registros

espero te ayude

Código PHP:

function cantidadPorEdades($ini$fin)
    {
        
$query mysql_query("SELECT ID FROM t_paciente WHERE fecha_nac BETWEEN '$ini' AND '$fin'");
        return 
mysql_num_rows($query);
    }
    
    
    if ( 
$menor cantidadPorEdades(018) )
    {
        echo 
'< 18 años: ' $menor '<br />'
    }
    
    for ( 
$i 31;  $i <= 90$i += 20 )
    {
        
$f           $i 19;
        
$cantidad cantidadPorEdades($i$f);
        
        echo 
'Entre ' $i .  ' y ' $f ' años: ' $cantidad '<br />';
    } 
buena suerte
  #6 (permalink)  
Antiguo 05/11/2012, 18:16
Avatar de dvbeaumont  
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 145
Antigüedad: 13 años
Puntos: 1
Respuesta: Agrupar registros

Perfecto!!!

Mil gracias!!

Quedó excelente! :D
__________________
Sé parte de nuestro mundo creativo.

http://bbcreativos.com

Etiquetas: agrupar, mysql, registro, registros, sql
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 19:13.