Foros del Web » Programando para Internet » PHP »

Consulta PHP en MySQL que repite resultados

Estas en el tema de Consulta PHP en MySQL que repite resultados en el foro de PHP en Foros del Web. Hola, Estoy haciendo una consulta SQL con 3 tablas pero me devuelve 3 resultados. Mejor dicho, me devuelve tantos resultados repetidos como tablas esten involucradas ...
  #1 (permalink)  
Antiguo 28/08/2005, 23:42
 
Fecha de Ingreso: julio-2004
Mensajes: 194
Antigüedad: 13 años, 5 meses
Puntos: 1
Consulta PHP en MySQL que repite resultados

Hola,

Estoy haciendo una consulta SQL con 3 tablas pero me devuelve 3 resultados.
Mejor dicho, me devuelve tantos resultados repetidos como tablas esten involucradas en la consulta, el codigo es:

Código PHP:
 $result mysql_query("SELECT * FROM finca,pal,elisa WHERE finca.municipio='".$_POST[query]."' && finca.id=elisa.finca && finca.id=pal.finca  ORDER BY finca.id ASC")
      or die (
"<script> alert(\"Ha ocurrido un error!\\nNo se pudo mostar la información.\\n\\nInformación Técnica: ".mysql_error()."  \");</script>"); 
lo muestro clasicamente con un while:

Código PHP:
while ($row mysql_fetch_array($result)){ 
   ......


Que estoy haciendo mal?

Saludos a todos y de antemano gracioas por las respuestas!
__________________
"Hay Algo Activo en el piso de Abajo..."

K-Seraph Blog
  #2 (permalink)  
Antiguo 29/08/2005, 01:06
Avatar de hadesinfer  
Fecha de Ingreso: mayo-2005
Mensajes: 43
Antigüedad: 12 años, 7 meses
Puntos: 0
prueba a la hora de mostrar los datos con while ($row=mysql_fetch_row($result)).....
  #3 (permalink)  
Antiguo 29/08/2005, 01:13
 
Fecha de Ingreso: agosto-2005
Mensajes: 10
Antigüedad: 12 años, 4 meses
Puntos: 0
haz de tener redundancia de datos, cheka bien tu consulta y los datos ke metes a tus tablas...
  #4 (permalink)  
Antiguo 29/08/2005, 06:44
 
Fecha de Ingreso: julio-2004
Mensajes: 194
Antigüedad: 13 años, 5 meses
Puntos: 1
no existe redundancia de datos.

El problema esta en la consulta con multiples tablas ya que a tantas tablas uso en la consulta, tantas veces se repiten los datos, es decir si uso 3 tablas aparece 3 veces el mismo datos, si uso 2 aparece 2 veces.

No detecto el error en la consulta, alguien lo ve?
__________________
"Hay Algo Activo en el piso de Abajo..."

K-Seraph Blog
  #5 (permalink)  
Antiguo 29/08/2005, 06:49
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Prueba poniendo distinct detras del select, asi coge todas las filas y si hay alguna repetida, sólo muestra una.

Código:
$result = mysql_query("SELECT DISTINCT * FROM finca,pal,elisa WHERE finca.municipio='".$_POST[query]."' && finca.id=elisa.finca && finca.id=pal.finca  ORDER BY finca.id ASC")
or die ("<script> alert(\"Ha ocurrido un error!\\nNo se pudo mostar la información.\\n\\nInformación Técnica: ".mysql_error()."  \");</script>");
  #6 (permalink)  
Antiguo 29/08/2005, 06:55
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Yo no veo ningún tipo de error...
¿Cuando pruebas la consulta en la base de datos directamente con phpmyadmin o mysqlfront o alguna cosa así también te aparecen los resultados por triplicado? Si es así, igual el problema es a la hora de hacer el while {$row = mysql_fetch_array...
  #7 (permalink)  
Antiguo 29/08/2005, 06:55
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Filas repetidas

Pero creo que vas a tener que quitar el * y sacar solo los campos comunes, porque al ser tablas distintas, las filas no van a ser nunca iguales y te las va a sacar todas, en cambio si solo sacas campos comunes, habra filas repetidas.
  #8 (permalink)  
Antiguo 29/08/2005, 07:04
 
Fecha de Ingreso: julio-2004
Mensajes: 194
Antigüedad: 13 años, 5 meses
Puntos: 1
chiririo, a que te refieres con campos comunes? :$ intente con el ejemplo que me das y aun sigue el error.

Flopi, cuando entro al PHPMyAdmin no aparecen repetidos, si consulto de forma individual las tablas tampoco salen repetidas.
__________________
"Hay Algo Activo en el piso de Abajo..."

K-Seraph Blog
  #9 (permalink)  
Antiguo 29/08/2005, 07:09
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Si esa consulta en el PHPMyAdmin no te da error, seguramente el fallo está en el código que lo muestra. ¿Podrías poner el código que usas en el while para mostrarlo?
  #10 (permalink)  
Antiguo 29/08/2005, 07:18
 
Fecha de Ingreso: julio-2004
Mensajes: 194
Antigüedad: 13 años, 5 meses
Puntos: 1
Código:
<?php
  while ($row = mysql_fetch_array($result)){
?>
  <tr>
    <td width="6%" height="24" align="center"><?  echo $row[finca]; ?></td>
    <td width="10%" height="24" align="center"><? echo $row[planta]; ?></td>
    <td width="6%" height="24" align="center"><?  echo $row[prov]; ?></td>
    <td width="13%" height="24" align="center"><? echo $row[propietario]; ?></td>
    <td width="12%" height="24" align="center"><? echo $row[nombre]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $row[municipio]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $row[parroquia]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $row[litros]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $row[vacas]; ?></td>
    <td width="6%" height="24" align="center"><?  echo $row[resultado_pal]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $row['do']; ?></td>
    <td width="6%" height="24" align="center"><?  echo $row[resultado_e]; ?></td>
    <td width="7%" height="24" align="center"><?  echo $row[fecha] ?></td>
    </tr>
<?php
}
?>
este es el codigo, como pueden ver se genera dentro de unas celdas html
__________________
"Hay Algo Activo en el piso de Abajo..."

K-Seraph Blog
  #11 (permalink)  
Antiguo 29/08/2005, 07:21
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Filas repetidas

Prueba a poner esto:

Código:
$result = mysql_query("SELECT DISTINCT finca.id 
FROM finca,pal,elisa WHERE finca.municipio='".$_POST[query]."' && finca.id=elisa.finca && finca.id=pal.finca  ORDER BY finca.id ASC")
or die ("<script> alert(\"Ha ocurrido un error!\\nNo se pudo mostar la información.\\n\\nInformación Técnica: ".mysql_error()."  \");</script>");
Me he expresado mal con lo de los campos comunes, lo que queria decir es que para un mismo finca.id hay varias filas, y si solo quieres que te salga una vez, debes hacer la select para que te muestra solo finca.id. Entonces al poner distinct te lo mostrara bien, o al menos eso creo.

Prueba y ya me cuentas.
  #12 (permalink)  
Antiguo 29/08/2005, 07:22
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Filas repetidas

Como esta consulta solo te muestra el id y veo que tu quieres todos los campos, luego tendras que hacer para cada id una consulta que muestre todos sus campos.
  #13 (permalink)  
Antiguo 29/08/2005, 07:24
 
Fecha de Ingreso: diciembre-2004
Mensajes: 120
Antigüedad: 13 años
Puntos: 0
Pues a mi me parece que deberái funcionarte bien...
¿te pasa lo mismo con el mysql_fetch_row?
  #14 (permalink)  
Antiguo 29/08/2005, 07:43
 
Fecha de Ingreso: julio-2004
Mensajes: 194
Antigüedad: 13 años, 5 meses
Puntos: 1
chiririo, ya probe tu otro ejemplo, ya se encamina la cosa pero ahora solo muestra resultado en el campo ID, los demas campos salen vacios. que hago al respecto?

Gracias por la ayuda
__________________
"Hay Algo Activo en el piso de Abajo..."

K-Seraph Blog
  #15 (permalink)  
Antiguo 29/08/2005, 07:51
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Filas repetidas

Supongo que no viste mi ultimo post.

Cita:
Iniciado por chiririo
Como esta consulta solo te muestra el id y veo que tu quieres todos los campos, luego tendras que hacer para cada id una consulta que muestre todos sus campos.
  #16 (permalink)  
Antiguo 29/08/2005, 08:02
 
Fecha de Ingreso: julio-2004
Mensajes: 194
Antigüedad: 13 años, 5 meses
Puntos: 1
Cita:
Iniciado por chiririo
Como esta consulta solo te muestra el id y veo que tu quieres todos los campos, luego tendras que hacer para cada id una consulta que muestre todos sus campos.
SI, no lo vi.

Amigo chiririo, me podrias dar un ejemplo? no entiendo muy bien a lo que te refieres
__________________
"Hay Algo Activo en el piso de Abajo..."

K-Seraph Blog
  #17 (permalink)  
Antiguo 29/08/2005, 09:37
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Filas repetidas

No se si los campos que quieres sacar son de las 3 tablas o solo de una. El codigo que te pongo es para cuando los campos son de las 3 tablas. Para cada fila que te saca la primera consulta (que te deuelve el id) haces otra consulta que te devuelve todos los datos relacionados con ese id. No se si le faltara alguna cosilla pero mas o menos es esto.

Por cierto, soy una chica, como he visto que me has dicho amigo

Código PHP:
<?php
  
while ($row mysql_fetch_array($result)){

      
$query mysql_query("SELECT * from finca,pal,elisa WHERE    
      finca.id=$row["
id"] && finca.id=elisa.finca && finca.id=pal.finca");            
      
$arr mysql_fetch_array($query);
?>
  <tr>
    <td width="6%" height="24" align="center"><?  echo $arr[finca]; ?></td>
    <td width="10%" height="24" align="center"><? echo $arr[planta]; ?></td>
    <td width="6%" height="24" align="center"><?  echo $arr[prov]; ?></td>
    <td width="13%" height="24" align="center"><? echo $arr[propietario]; ?></td>
    <td width="12%" height="24" align="center"><? echo $arr[nombre]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $arr[municipio]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $arr[parroquia]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $arr[litros]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $arr[vacas]; ?></td>
    <td width="6%" height="24" align="center"><?  echo $arr[resultado_pal]; ?></td>
    <td width="5%" height="24" align="center"><?  echo $arr['do']; ?></td>
    <td width="6%" height="24" align="center"><?  echo $arr[resultado_e]; ?></td>
    <td width="7%" height="24" align="center"><?  echo $arr[fecha?></td>
    </tr>
<?php
}
?>
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 16:58.