Foros del Web » Programando para Internet » PHP »

Agrupar resultados de una consulta

Estas en el tema de Agrupar resultados de una consulta en el foro de PHP en Foros del Web. Hola compañeros, espero que podáis ayudarme. Este resultado de una consulta: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original DNI         DataVisita 58963214D   ...
  #1 (permalink)  
Antiguo 05/06/2012, 04:45
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 2 meses
Puntos: 0
Agrupar resultados de una consulta

Hola compañeros, espero que podáis ayudarme.

Este resultado de una consulta:

Código MySQL:
Ver original
  1. DNI         DataVisita
  2. 58963214D   2011-02-15
  3. 58963214D   2011-04-05
  4. 58963214D   2011-08-10
  5. 58963214D   2011-09-12 
  6. 58963214D   2012-01-15


Pero a la hora de mostrarlo en una pagina web no quiero que salga así. Me gustaría tenerlo agrupado, que muestre de un DNI, todas las visitas que tiene. Que quedase algo asi.

Código HTML:
Ver original
  1. DNI           Visitas
  2. 58963214D     2011-02-15
  3.               2011-04-05
  4.               etc.
  5. 65555555Y     2012-05-05


Supongo que es el php quien lo edita eso mas que en la consulta mysql no??

muchas gracias
  #2 (permalink)  
Antiguo 05/06/2012, 04:58
 
Fecha de Ingreso: junio-2012
Ubicación: Alicante
Mensajes: 44
Antigüedad: 11 años, 10 meses
Puntos: 6
Respuesta: Agrupar resultados de una consulta

El PHP solo muestra lo que la consulta le pasa, por lo tanto debes cambiar la consulta.
  #3 (permalink)  
Antiguo 05/06/2012, 05:18
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Agrupar resultados de una consulta

Código PHP:
Ver original
  1. SELECT * FROM tabla WHERE DNI = '58963214D'

así te mostrará solo los de ese DNI no?, pues haz lo mismo con cada DNI.

Si lo haces con un bucle te quedaría algo asi:

Código PHP:
Ver original
  1. $cons = SELECT DNI FROM tabla;
  2. while($datos = mysql_fetch_row($cons)){
  3.  $dni = $row[0];
  4. }
  5.  
  6. SELECT * FROM tabla WHERE DNI = $dni;
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #4 (permalink)  
Antiguo 05/06/2012, 05:18
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Agrupar resultados de una consulta

he encontrado una especie de concatenación, pero realmente queda algo feo ya que el resultado queda así.

Código HTML:
Ver original
  1. DNI         Visita
  2. 58963214D   2011-02-15,2011-04-05,2011-08-10,2011-09-12,2012-01-15
  #5 (permalink)  
Antiguo 05/06/2012, 05:21
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Agrupar resultados de una consulta

Cita:
Iniciado por oNefl0w189 Ver Mensaje
Código PHP:
Ver original
  1. SELECT * FROM tabla WHERE DNI = '58963214D'

así te mostrará solo los de ese DNI no?, pues haz lo mismo con cada DNI.

Si lo haces con un bucle te quedaría algo asi:

Código PHP:
Ver original
  1. $cons = SELECT DNI FROM tabla;
  2. while($datos = mysql_fetch_row($cons)){
  3.  $dni = $datos[0];
  4. }
  5.  
  6. SELECT * FROM tabla WHERE DNI = $dni;

Prueba algo así y cuéntanos...

PD: He modificado el código, que había alguna q otra cosilla mal.
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #6 (permalink)  
Antiguo 05/06/2012, 05:34
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Agrupar resultados de una consulta

pero realmente el DNI ya se lo doy yo desde un formulario, yo lo que quiero es a la hora de presentarlo, que quede en una misma columna ya que como lo tengo voy mostrando muchas tablas para nada
  #7 (permalink)  
Antiguo 05/06/2012, 06:05
Avatar de oNefl0w189  
Fecha de Ingreso: abril-2010
Ubicación: Valladolid
Mensajes: 117
Antigüedad: 14 años
Puntos: 4
Respuesta: Agrupar resultados de una consulta

Pues en vez de coger el DNI de la consulta cogele de el $_POST que obtienes del formulario.

y Para que no te cree muchas tablas, abre la tabla fuera del bucle y dentro del bucle solo abre las celdas..
__________________
Nunca dijeron que la vida sería fácil, sólo prometieron que valdría la pena vivirla.

Dar las gracias y añadir Karma, no cuesta nada, ¿Que menos si te ayudan? :)
  #8 (permalink)  
Antiguo 05/06/2012, 06:08
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Agrupar resultados de una consulta

Creo que la mejor solución, es hacerlo como lo haces, con una sola consulta y luego solucionarlo cuando sigues los resultados. Te adjunto código:

Código PHP:
$cons SELECT FROM tabla;
$ultdni="";
while(
$datos mysql_fetch_row($cons)){
   if(
$datos["dni"]<>$ultdni){
      
$ultdni=$datos["dni"];
       echo 
$ultdni;// aquí, aplica tus etiquetas html correspondientes
    
}
    ......
bla bla

Si tienes cualquier duda, dímelo.

Saludos
  #9 (permalink)  
Antiguo 07/06/2012, 17:26
Avatar de miglos  
Fecha de Ingreso: enero-2005
Ubicación: Perú
Mensajes: 235
Antigüedad: 19 años, 3 meses
Puntos: 1
Respuesta: Agrupar resultados de una consulta

Esta consulta te puede ayudar, en mi caso muestra el nombre del usuario y las fechas en que se registró.

Código:
SELECT
	u.nombre AS Nombre,
	GROUP_CONCAT(l.fecha ORDER BY l.fecha) AS Fecha
FROM log_usuarios AS l
JOIN usuarios AS u ON l.id_usuario = u.id_usuario
GROUP BY u.nombre;
que te debe mostrar algo parecido a lo que comentaste antes y uqe habría que editar con php.

Otra solución sería:
Código:
SET @last='';
SELECT
	IF(r.nombre=@last,'',@last:=r.nombre) AS Nombre,
	r.log_usuarios AS Fecha
FROM (
	SELECT DISTINCT u.nombre AS Nombre, l.fecha AS Fecha
	FROM usuarios AS u
	JOIN log_usuarios AS l ON u.id_usuario=l.id_usuario
	ORDER BY u.nombre, l.fecha
) AS r

Saludos!
__________________
:adios:
  #10 (permalink)  
Antiguo 08/06/2012, 00:19
Avatar de xpapachox  
Fecha de Ingreso: junio-2011
Mensajes: 77
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Agrupar resultados de una consulta

Hola amigo espero no haber llegado tarde..
Lo que te sugiero es que hagas 2 consultas 1 para LOS DNI solo y otro para las demas columnas que pertenecen a ese DNI.


Abajo un ejemplo donde se listan las categorias,y su detalle, productos por categoria.
Código PHP:
<?php
$query 
"select codcat,nomcat from categoria";


$rs mysql_query($query);

echo 
"<table border=1>";
while(
$fila=  mysql_fetch_array($rs)){    
    echo 
"<tr><td>".$fila["codcat"]."-".$fila["nomcat"]."</td><td>";   
    
$query1 ="select nompro from producto where codcat={$fila["codcat"]}";
    
$rs1 mysql_query($query1);
    while(
$fila1=  mysql_fetch_array($rs1)){
        echo 
$fila1['nompro']."<br />";
    }
    echo 
"</td></tr>";
}
echo 
'</table>';
Espero te sirve o te de una idea de como combinar las consultas.
Ya que lo que quieres hacer es mas para reportes.
  #11 (permalink)  
Antiguo 11/06/2012, 05:18
 
Fecha de Ingreso: enero-2010
Mensajes: 49
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Agrupar resultados de una consulta

Cita:
Iniciado por xpapachox Ver Mensaje
Hola amigo espero no haber llegado tarde..
Lo que te sugiero es que hagas 2 consultas 1 para LOS DNI solo y otro para las demas columnas que pertenecen a ese DNI.


Abajo un ejemplo donde se listan las categorias,y su detalle, productos por categoria.
Código PHP:
<?php
$query 
"select codcat,nomcat from categoria";


$rs mysql_query($query);

echo 
"<table border=1>";
while(
$fila=  mysql_fetch_array($rs)){    
    echo 
"<tr><td>".$fila["codcat"]."-".$fila["nomcat"]."</td><td>";   
    
$query1 ="select nompro from producto where codcat={$fila["codcat"]}";
    
$rs1 mysql_query($query1);
    while(
$fila1=  mysql_fetch_array($rs1)){
        echo 
$fila1['nompro']."<br />";
    }
    echo 
"</td></tr>";
}
echo 
'</table>';
Espero te sirve o te de una idea de como combinar las consultas.
Ya que lo que quieres hacer es mas para reportes.


es justo lo que buscaba en cuanto al agrupamiento de las fechas, lo que ahora ya estoy intentando que me muestre solo la tabla del DNI en cuestion que consulto, no se si me he explicado jejejeje

gracias a todos por contestar

Etiquetas: agrupar, mysql, resultados
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 09:02.