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>";
}