Foros del Web » Programando para Internet » PHP »

Mejorar consulta

Estas en el tema de Mejorar consulta en el foro de PHP en Foros del Web. Hola, hice una funcion para calcular los comentarios de mis usuarios en la cual necesito hacer 4 consultas a la Base de Datos y ,luego, ...
  #1 (permalink)  
Antiguo 08/11/2011, 14:12
 
Fecha de Ingreso: mayo-2010
Mensajes: 66
Antigüedad: 14 años
Puntos: 2
Mejorar consulta

Hola, hice una funcion para calcular los comentarios de mis usuarios en la cual necesito hacer 4 consultas a la Base de Datos y ,luego, sumar la cantidad de resultados.

Quería saber si se les ocurre alguna manera simplificar las 4 consultas en 1.


Código PHP:
function calcular_comentarios($usuarioid)
{
// Cuenta los comentarios en las maquetas
$consulta mysql_query("SELECT MaquetaID FROM comentarios_maquetas
                         WHERE UsuarioID = '$usuarioid'
                         AND Bloqueado = 0
                         "
);
$c_maquetas mysql_num_rows($consulta);
// Cuenta los comentarios en los temas
$consulta mysql_query("SELECT TemaID FROM comentarios_temas
                         WHERE UsuarioID = '$usuarioid'
                         AND Bloqueado = 0
                         "
);
$c_temas mysql_num_rows($consulta);
// Cuenta los comentarios en las instrumentales
$consulta mysql_query("SELECT InstrumentalID FROM comentarios_instrumentales
                         WHERE UsuarioID = '$usuarioid'
                         AND Bloqueado = 0
                         "
);
$c_instrumentales mysql_num_rows($consulta);
// Cuenta los comentarios en los videos
$consulta mysql_query("SELECT VideoID FROM comentarios_videos
                         WHERE UsuarioID = '$usuarioid'
                         AND Bloqueado = 0
                         "
);
$c_videos mysql_num_rows($consulta);

$total_comentarios $c_maquetas $c_temas $c_instrumentales $c_videos;

return 
$total_comentarios;

Saludos.

PD: No sabía si postearlo acá o en MYSQL, mil disculpas.
  #2 (permalink)  
Antiguo 08/11/2011, 14:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: Mejorar consulta

Si UsuarioID es el usuario, común, puedes hacer un JOIN con todas las tablas y posteriormente, usar COUNT...

SELECT COUNT(*) FROM ... WHERE usuarioID = 'user'

Saludos.
  #3 (permalink)  
Antiguo 08/11/2011, 14:47
Avatar de jcxnet  
Fecha de Ingreso: octubre-2005
Ubicación: Perú
Mensajes: 784
Antigüedad: 18 años, 7 meses
Puntos: 56
Respuesta: Mejorar consulta

o cambiar el diseño de tu base, deberia existir una sola tabla "Comentarios" donde grabas el id del usuario y el id de la tabla relacionada (videos, instrumentales, temas, etc), así solo harías una consulta
__________________
►I'm a devil on the run ♂
Jcxnet.com
*Keep It Simple **
  #4 (permalink)  
Antiguo 08/11/2011, 16:31
Avatar de Trublux  
Fecha de Ingreso: octubre-2010
Ubicación: Madrid
Mensajes: 355
Antigüedad: 13 años, 6 meses
Puntos: 48
Respuesta: Mejorar consulta

Desviándome un poco del tema:
Si lo que quieres es sacar el número de registros que cumplen unas determinadas condiciones usa "count(*)" en vez de seleccionar todos los elementos y luego hacer un "mysql_num_rows".
De verdad, NUNCA lo hagas como en lo que has puesto, es una salvajada.
__________________
eZ Publish Developer Basic Legacy
eZ Publish Developer Basics (4.4)
Alojamientos rurales en España
  #5 (permalink)  
Antiguo 08/11/2011, 16:36
 
Fecha de Ingreso: mayo-2010
Mensajes: 66
Antigüedad: 14 años
Puntos: 2
Respuesta: Mejorar consulta

Gracias a todos, ya solucione el problema.

Etiquetas: mejorar, mysql, usuarios
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 02:27.