Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Error de muestreo SELECT

Estas en el tema de Error de muestreo SELECT en el foro de Mysql en Foros del Web. Hola a todos, tengo esta consulta que me ayudo el amigo repara2 a hacerla, bien tengo error de muestreo, (hoy me di cuenta). La consulta: ...
  #1 (permalink)  
Antiguo 03/03/2012, 16:48
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Error de muestreo SELECT

Hola a todos, tengo esta consulta que me ayudo el amigo repara2 a hacerla, bien tengo error de muestreo, (hoy me di cuenta).

La consulta:

Código SQL:
Ver original
  1. SELECT U.nombrecompleto_usuario, I.valor_interaccion, I.de_interaccion
  2.     FROM interaccion I
  3.     LEFT JOIN usuarios U ON (I.de_interaccion = U.fid_usuario)
  4.     WHERE (I.a_interaccion = "'.$_SESSION['fid_username'].'"
  5.           AND I.a_interaccion IN(SELECT
  6.                                    de_interaccion
  7.                                  FROM interaccion H
  8.                                  WHERE H.de_interaccion = "'.$_SESSION['fid_username'].'"))
  9.        AND valor_interaccion <> 3 ORDER BY U.nombrecompleto_usuario ASC

la session de php es el nombre de usuario que navega, es decir, que si navego yo mi id seria 123123132 por ejemplo.

Bien, la consulta muestra la gente que te voto siempre y cuando vos la hayas votado, simple...

Digo que es un error de select porque hise pruebas con la base de datos, yo votando a una persona y esa persona votandome pero ademas hise que 2 personas más me votaran y los resultados fueron que me muestra las 3 personas cosa que deberia mostrar 1...

Algo asi:



Fijense que a la derecha de la imagen (lo señalé) me dice que es (1) cosa que esto deberia ser asi, pero debajo de la imagen (donde se muestran las fotos) aparecen 3 personas... La verdadera es la primera, las otras dos no se porque aparecen ...

Este es mi codigo de muestreo en php:

Código PHP:
Ver original
  1. <?php while($todo_bien = mysql_fetch_array($q_estadisticas_both)){?>
  2. <table width="500px" border="1">
  3.   <tr>
  4.     <td width="50px"><?php echo '<img src=https://graph.facebook.com/'.$todo_bien['de_interaccion'].'/picture>';?></td>
  5.     <td width="300px"><?php echo $todo_bien['nombrecompleto_usuario'];?></td>
  6.     <td><?php if($todo_bien['valor_interaccion'] == 1) echo "Dijo Sí";
  7.               if($todo_bien['valor_interaccion'] == 2) echo "Dijo Capaz!";?></td>
  8.   </tr>
  9. </table>
  10. <?php }?>

¿Como lo puedo solucionar?, es como que me muestra la verdadera y los demas son residuos de la consulta, no entiendo mucho de mysql !
__________________
Mi primera web: http://www.mascoteame.com
  #2 (permalink)  
Antiguo 04/03/2012, 02:46
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Error de muestreo SELECT

Lo primero fíjate de dónde sale el contador de la derecha que dice 1,3,1. Si estás haciendo un count() de la consutla y el resultado es correcto, entonces la select es correcta. Prueba la select un un cliente mysql a ver si es verdad. Si la select es correcta entonces hay que ver cómo lo estás mostrando para que te muestre 3. Si la consulta devuelve 1 pero te salen 3 por pantalla, el problema es que estás mostrando la select incorrecta. No hay nada de residuos ni nada por el estilo. Averigua primero por qué el mysql_count() es correcto (en teoria) pero el mysql_fetch_assoc() devuelve otra cosa, hazlo ANTES de seguir investigando el código SQL. Saludos,
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 04/03/2012, 13:03
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Error de muestreo SELECT

Gracias por responder!,

Mira noto que hay algo mal, hize lo que me dijiste y tuve dos resultados diferentes.

En la parde derecha de la pantalla existe esta consulta para contar cuantos vote y me votaron:

Código SQL:
Ver original
  1. SELECT I.*
  2. FROM interaccion I
  3. WHERE (I.de_interaccion = "'.$_SESSION['fid_username'].'"
  4.        AND I.a_interaccion IN(SELECT
  5.                                 de_interaccion
  6.                               FROM interaccion H
  7.                               WHERE H.a_interaccion = "'.$_SESSION['fid_username'].'"))
  8.     AND valor_interaccion <> 3

y me devuelve:



que esto seria mostrandolo con php:



Mi imagen ... bueno, los datos de la derecha los muestra correctamente salvo que me muestra a mi y deberia buscar los datos de las personas :P


Y en cuanto a lo de la izquierda que es este codigo:

Código SQL:
Ver original
  1. SELECT U.nombrecompleto_usuario AS nombrecompleto_usuario, I.valor_interaccion AS valor_interaccion, I.de_interaccion AS de_interaccion
  2.     FROM interaccion I
  3.     LEFT JOIN usuarios U ON (I.de_interaccion = U.fid_usuario)
  4.     WHERE (I.a_interaccion = "'.$_SESSION['fid_username'].'"
  5.           AND I.a_interaccion IN(SELECT
  6.                                    de_interaccion
  7.                                  FROM interaccion H
  8.                                  WHERE H.de_interaccion = "'.$_SESSION['fid_username'].'"))
  9.        AND valor_interaccion <> 3 ORDER BY U.id_usuario DESC

el resultado de mysql fue:



Me muestra 3 personas!, deberia mostrar dos ... marcos esta colgado ahi jajaja.
y la salida en pantalla fue lo que mostre cuando cree el thread...

que puedo hacer?
__________________
Mi primera web: http://www.mascoteame.com
  #4 (permalink)  
Antiguo 04/03/2012, 13:20
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Error de muestreo SELECT

Pasame la tabla para que pueda probar la select
__________________
Fere libenter homines, id quod volunt, credunt.
  #5 (permalink)  
Antiguo 04/03/2012, 13:30
Avatar de VbOkonly  
Fecha de Ingreso: julio-2009
Ubicación: San Justo, Buenos Aires, Argentina
Mensajes: 490
Antigüedad: 14 años, 9 meses
Puntos: 5
Respuesta: Error de muestreo SELECT

Resuelto: Tome la consulta de la derecha y le cambie la polaridad jajaja, los de_ los cambie por a_ y los a_ por de_

Quedo asi

Código SQL:
Ver original
  1. SELECT U.nombrecompleto_usuario AS nombrecompleto_usuario, I.valor_interaccion AS valor_interaccion, I.de_interaccion AS de_interaccion
  2.     FROM interaccion I
  3. LEFT JOIN usuarios U ON (I.de_interaccion = U.fid_usuario)
  4. WHERE (I.a_interaccion = "'.$_SESSION['fid_username'].'"
  5.        AND I.de_interaccion IN(SELECT
  6.                                 a_interaccion
  7.                               FROM interaccion H
  8.                               WHERE H.de_interaccion = "'.$_SESSION['fid_username'].'"))
  9.     AND valor_interaccion <> 3

Y me los muestra perfectamente!!, gracias por repararme!! jajajajaj ahi te tiro k+

edit:

asi quedo!
__________________
Mi primera web: http://www.mascoteame.com

Etiquetas: join, muestreo, php, select, 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 17:04.