Foros del Web » Programando para Internet » PHP »

Datos repetidos en consulta

Estas en el tema de Datos repetidos en consulta en el foro de PHP en Foros del Web. Buen dia amigos, tengo la siguiente situacion, tengo las siguientes tablas conestos datos: Tabla responder: cod_resp | respuesta 1 respuesta uno 2 respuesta dos Tabla ...
  #1 (permalink)  
Antiguo 18/05/2015, 10:55
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 3 meses
Puntos: 2
Datos repetidos en consulta

Buen dia amigos, tengo la siguiente situacion, tengo las siguientes tablas conestos datos:

Tabla responder:
cod_resp | respuesta
1 respuesta uno
2 respuesta dos

Tabla archivos_resp:

id | cod_resp | nombre_archivos_resp
1 1 383660_2916693272114_905567694_n.jpg
2 1 francois_new2.jpg
3 1 foto3.4rh 002.jpg
4 2 EL_ENTORNO_DE_LA_EMPRESA.pdf

Necesito mostrar la respuesta con los respectivos archivos que se guardaron. Pero al hacerlo me muestra las respuestas repetidas. Es decir, si en la respuesta uno se guardaron tres archivos entonces me va a mostrar respuesta uno tres veces. Pero la idea es que me muestre una vez la respuesta solo una vez con sus respectivos archivos sin importar cuantos sean:

Código PHP:
        <?             
        $sql
="SELECT responder.cod_resp,archivos_resp.cod_resp,archivos_resp.nombre_archivos_resp,responder.respuesta 
              FROM responder INNER JOIN archivos_resp ON 
              responder.cod_resp=archivos_resp.cod_resp; 
              
        "
;
        
$result=mysql_query($sql,$link);
        while(
$row=mysql_fetch_array($result)){
            echo 
"$row[respuesta] $row[cod_resp] $row[nombre_archivos_resp]";
            echo 
"<br>";
        }
//cierra consulta while
        
?>
Esto es lo que me esta mostrando actualmente:

Código HTML:
Ver original
  1. respuesta1  1   383660_2916693272114_905567694_n.jpg
  2. respuesta1  1   francois_new2.jpg
  3. respuesta1  1   foto3.4rh 002.jpg
  4. respuesta2  2   EL_ENTORNO_DE_LA_EMPRESA.pdf
  5.  
  6. La idea es que me muestre de la siguiente forma:
  7.  
  8. respuesta1  1
  9. 383660_2916693272114_905567694_n.jpg
  10. francois_new2.jpg
  11. foto3.4rh 002.jpg
  12.  
  13.  
  14. respuesta2  2  
  15. EL_ENTORNO_DE_LA_EMPRESA.pdf
Alguien me podria colaborar por favor. se lo agradeceria mucho.
  #2 (permalink)  
Antiguo 19/05/2015, 00:23
 
Fecha de Ingreso: septiembre-2014
Mensajes: 180
Antigüedad: 9 años, 7 meses
Puntos: 14
Respuesta: Datos repetidos en consulta

Prueba a agrupar el resultado por el identificador de respuesta, por ejemplo:

Código PHP:
Ver original
  1. $sql="SELECT responder.cod_resp,archivos_resp.cod_resp,archivos_resp.nombre_archivos_resp,responder.respuesta  
  2.              FROM responder INNER JOIN archivos_resp ON  
  3.              responder.cod_resp=archivos_resp.cod_resp GROUP BY responder.cod_resp";
__________________
Unelink.es - VPS, servidores dedicados, hosting y dominios. 10 años a tu lado.
  #3 (permalink)  
Antiguo 19/05/2015, 06:22
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Datos repetidos en consulta

Hola Json muchas gracias por tu respuesta. Hice lo que me sugeriste pero entonces solo me muestra el primer archivo adjunto de la respuesta 1 y los de mas desaparecen asi:

Código HTML:
Ver original
  1. respuesta1  1
  2. 383660_2916693272114_905567694_n.jpg
  3.  
  4. respuesta2  2  
  5. EL_ENTORNO_DE_LA_EMPRESA.pdf
¿Habra otra forma de realizar la consulta o una funcion que me permita hacer lo que deseo?
  #4 (permalink)  
Antiguo 19/05/2015, 06:49
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: Datos repetidos en consulta

Cita:
Necesito mostrar la respuesta con los respectivos archivos que se guardaron. Pero al hacerlo me muestra las respuestas repetidas. Es decir, si en la respuesta uno se guardaron tres archivos entonces me va a mostrar respuesta uno tres veces. Pero la idea es que me muestre una vez la respuesta solo una vez con sus respectivos archivos sin importar cuantos sean
Bueno, eso no es un error, ni un defecto, ni nada parecido. Ese es el comportamiento normal y esperado de un JOIN cuando la relación entre ambas tablas tiene una cardinalidad 1:N, y no 1:1, eso tiene que quedarte claro.
Esto implica que la query está bien y que el problema de la visualización lo debes resolver por PHP. NO le busques solución por SQL porque NO EXISTE.

¿Cómo lo haces?

Bueno, la solución es de manual básico.
Debes:
1) Tomar los valores de los dos primeros campos en el primer registros y pasarlos a sendas variables.
2) Mostrar los valores obtenidos de ese registro, y el valor del ultimo campo en el renglon siguiente.
3) Comenzar la iteración del while, donde se procesará desde el siguiente registro obtenido, si existe.
4) Dentro del while, verificar si el nuevo registro obtenido tiene el mismo valor en los dos primeros campos que los que pusiste en las variables.
5) Si el valor es el mismo, no muestras el contenido de esos campos y sólo expones el tercero.
6) Si el valor del registro en esos campos es diferente: a) reemplazas el contenido de las variables por los valores neuvos, b) Muestras ese neuvo título, y c) muestras el dato final, como al principio.

¿Se entiende esta descripción?

Para tu ejemplo, sería mas o menos:
Código PHP:
  $result=mysql_query($sql,$link);
  
$rw mysql_fetch_array($result);
  
$resp $rw[respuesta];
  
$cod $rw[cod_resp];
  echo 
"$resp  $cod ";
  echo 
"<br>";

  while(
$row=mysql_fetch_array($result)){
    if(
$row[respuesta]!=$resp &&  $row[cod_resp] !=$cod)
      {
        
$resp $row[respuesta];
        
$cod $row[cod_resp];
        echo 
"$resp  $cod ";
        echo 
"<br>";
       }
       echo 
"$row[nombre_archivos_resp]";
       echo 
"<br>";
      } 
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 21/05/2015, 09:40
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 3 meses
Puntos: 2
Respuesta: Datos repetidos en consulta

Gracias me funcionó.

Etiquetas: repetidos, select, sql, tabla
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 20:30.