Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/06/2009, 03:51
djmourino
 
Fecha de Ingreso: noviembre-2006
Mensajes: 27
Antigüedad: 17 años, 6 meses
Puntos: 1
Optimizar consulta sql con subconsultas

Muy buenas a todos los foreros de forosdelweb, bueno vengo a preguntar por aquí haber si algún guru del sql me puede iluminar un poco con un script que estoy desarrollando.
Bueno lo primero explico lo que tengo, tengo 3 tablas.
usuarios = guardo el id del usuario ,nombre , apellidos ect.
mensajes= guardo los mensajes que le envió a los usuarios.
click = guardo los enlaces que pulsa el usuario en los mensajes que le envió.

Bien ahora lo que quiero conseguir es sacar el id del usuario y con este mismo hacer una subconsulta para saber el numero de mensajes que tiene pero solo los que hizo click, para que nos entendamos mejor pongo el script que tengo ahora mismo.

Código php:
Ver original
  1. $usuarios=Queryl("SELECT id FROM ".$prefix1."usuarios  WHERE estado='1' ORDER BY id");//Con esta consulta saco el id del usuario
  2.  
  3. while($datos_usuarios= mysql_fetch_array($usuarios)){
  4. $id_usuario=intval($datos_usuarios['id']);
  5.  
  6. $usuario_mensajes_click=Queryl("SELECT a.*,b.* FROM ".$prefix2."mensajes AS a, ".$prefix2."click AS b
  7.                                   WHERE a.id_usuario='$id_usuario' AND b.id_mensaje=a.id
  8.                                   GROUP BY b.id_mensaje"); //El group es para que me cuente 1 solo resultado del mismo id_mensaje
  9.  
  10. $numero_=mysql_num_rows($usuario_mensajes_click);//Numero de mensajes que se le envió e hizo click
  11. }

Bueno pos la idea es hacer eso mismo pero optimizando las consultas por que de esa forma que e puesto anteriormente si son 1000 usuarios el numero de consultas a la db se dispara, quiero hacer algo de este tipo
Código php:
Ver original
  1. $usuarios=Queryl("SELECT id,(SELECT count(*)  FROM ".$prefix2."mensajes ...ect) AS numero_mensajes_click  FROM ".$prefix1."usuarios  WHERE estado='1' ORDER BY id");

Un saludo y gracias.