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

Consulta de consultas

Estas en el tema de Consulta de consultas en el foro de Mysql en Foros del Web. Tengo que realizar una consulta q consiste en lo siguiente Existe una tabla de productos, una tabla de usuarios, una tabla de votos donde aparecen ...
  #1 (permalink)  
Antiguo 22/02/2012, 21:22
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 8 meses
Puntos: 1
Consulta de consultas

Tengo que realizar una consulta q consiste en lo siguiente

Existe una tabla de productos, una tabla de usuarios, una tabla de votos donde aparecen los votos que cada usuario hace de los productos y una tabla de relaciones en donde registro quienes son mis amigos (o los amigos de la sesion)

Cada usuario tiene un Id, y cada producto tiene tambien su Id.

La idea es q yo mi pagina tiene q mostrar unas recomendaciones de productos por los q mis amigos han votado pero por los cuales yo no lo he hecho, tengo construida la consulta de esta manera

$qPRD = mysql_query("SELECT DISTINCT Id_producto FROM votos WHERE (Id_usuario IN (SELECT DISTINCT Id_usuario2 FROM amigos WHERE Id_usuario1='$sesion') and Id_usuario!='$sesion');",$conn) or die ("Error :".mysql_error());
$aqPRD = mysql_fetch_array($qPRD);

Esta consulta no igual me sigue mostrando los productos por los cuales ha votado el usuario de la sesion.

Gracias y espero haber sido claro al expresar mi interrogante,

Gracias
  #2 (permalink)  
Antiguo 24/02/2012, 03:28
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Consulta de consultas

Código MySQL:
Ver original
  1.   Id_producto
  2. FROM votos
  3. WHERE Id_usuario IN(SELECT DISTINCT
  4.                       Id_usuario2
  5.                     FROM amigos
  6.                     WHERE Id_usuario1 = '$sesion')
  7.     AND Id_usuario != '$sesion');

Comprueba la sintaxis contra la select que te mando.
Para saber por qué no funciona tienes que probar las subselect por separado, es muy difícil ayudarte sin ver las tablas. Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 24/02/2012, 09:30
 
Fecha de Ingreso: marzo-2004
Mensajes: 199
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: Consulta de consultas

Hola, agradezco tu respuesta, y voy a presentar las tablas para si ser mas claro

Tabla usuarios

Id_usuario | Nombre
1 | Carlos
2 | Nestor
3 | Paola
4 | Liliana

Tabla productos

Id_producto | producto
A | Mouse
B | Teclado
C | Monitor
D | Modem

Tabla relaciones (quien es amigo de quien)

Id_relacion | Id_usuario1 | Id_usuario 2
1 | 1 | 2
2 | 2 | 4
3 | 1 | 3
4 | 4 | 3

Tabla votos (puntaje q le ha dado cada usuario a un producto

Id_voto | Id_producto | Id_usuario | Voto
1 | B | 1 | 10
2 | C | 1 | 2
3 | C | 2 | 8
4 | D | 2 | 10
5 | A | 4 | 5
6 | A | 3 | 3
7 | C | 3 | 1



El ejercicio consiste en recomendar productos al usuario q tenga abierta la sesion, para el ejercicio digamos q el usuario1 es la sesion, entonces mi consulta debe mostrar los productos por los cuales ha votado los amigos de 1 (sesion) pero por los cuales yo no he votado

en este caso los amigos de 1 son el usuario 2 y el usuario 3, ellos han votado por los productos A,C,D y de esos el usuario1 no ha votado por producto A, por lo cual en mi consulta el deberia recomendar el producto A, ya q por el han votados los amigos de 1 pero 1 no ha votado por el.

Espero ahora si ser mas claro y de nuevo agradezco la colaboracion
  #4 (permalink)  
Antiguo 25/02/2012, 14:29
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 14 años, 2 meses
Puntos: 331
Respuesta: Consulta de consultas

En este momento no puedo ponerme a probar las selects pero la cosa es así:

1. Obtener los id de los amigos
2. Obtener los productos que votaron los amigos, agrupar o hacer un distinct para que no salgan productos repetidos.
3. Obtener mis votos a productos
4. El resultado buscado es 2 - 3, es decir, lo que mis amigos han votado y yo no.

Escribe las selects por separado, las pruebas en un cliente mysql y luego las vas anidando, después te paso un ejemplo.
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: query, 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 13:53.