entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Conteo/suma de dos tablas en base de datos MySQL

Hola, paso a comentarles mi inquietud.

Tengo una tabla llamada "facciones" que posee las ID's y los nombres de las mismas (éstas son los "grupos" de los que hablo). Y además, una tabla "usuarios", los usuarios tienen en sus filas la columna "faccion", si la ID de la faccion coincide con alguna de las que está en la tabla "facciones" quiere decir que el mismo pertenece a tal. Además los usuarios poseen una columna llamada "online" que indica el estado de conexión de los mismos.

Ahora, lo que quiero hacer es, como bien mencioné arriba, una suma entre los usuarios que son de una misma facción o grupo y además, comparten su columna "online" en 1.

En resumen (y supongo que, ya a esta altura se entendió), quiero hacer una opción que muestre cuántos usuarios de un mismo grupo están conectados y sea visible para todo el grupo.

No sé si esto sea útil, pero, yo antes hago una consulta:

<?php
          $sql = mysql_query("SELECT * FROM facciones WHERE id='".$player['faccion']."'");
          if($faccion = mysql_fetch_array($sql))
?>

Y la uso después para este tipo de cosas:

<?php echo $faccion['Nombre']; ?>
<?php echo $faccion['Tipo']; ?>

Tengo una tabla facciones y otra usuarios.
En usuarios están las columnas faccion, rango y online. La columna facción indica el ID de la tabla facciones, rango indica el N° de rango (aunque esto es irrelevante acá) y online indica si el usuario está o no conectado.

Lo que quisiera hacer es mostrar de una facción en concreta (la que el usuario es miembro) la cantidad de usuarios que son de esa facción y tienen su columna online en 1 (es decir, que están conectados).

Gracias.

1 Respuesta

2votos

Javi2EE Puntos6630

Buenas si lo que quieres es la suma de los usuarios tienes que utilizar COUNT, la consulta quedaría así:

SELECT COUNT(*) FROM usuarios WHERE faccion = '".$player['faccion']."' and online=1;

Si lo que quieres es la lista de usuarios que estón online y pertenecen a la facción elimina el count:

SELECT * FROM usuarios WHERE faccion = '".$player['faccion']."' and online=1;

La primera consulta te devuelve solo un numero, la segunda una lista de usuarios.

ACTUALIZACIÓN:

En respuesta al comentario PHP no es lo mio pero supongo que para mostrar la primera consulta en PHP se podría hacer algo asi:

$valor = mysql_result($sql, 0);
echo "Hay ".$valor "usuarios conectados"

Para mostrar la segunda consulta podrías utilizar un array:

// Verifica si ha devuelto algún registro
if (!mssql_num_rows($sql)) {
    echo 'No se encontraron usuarios';
} else {
    while ($row = mssql_fetch_array($sql)) {
        echo $row['nombre'] <br>; 
}
// Suponiendo que tu tabla usuarios tenga un campo nombre

Un saludo.

0voto

Leyes comentado

Gracias por responder, para esa consulta: ¿cómo podría hacer para mostrarla en un echo como puse en el ejemplo de abajo?

2votos

Javi2EE comentado

Mira la actualización de la respuesta, espero que te funcione

0voto

Leyes comentado

Lo adapté así al final:

<?php
          $sql = mysql_query("SELECT COUNT(*) FROM usuarios WHERE faccion = '".$player['faccion']."' and online=1");
          $valor = mysql_result($sql);
?>
                            Integrantes conectados: <?php echo $valor ?>

Pero me está tirando el siguiente error para la línea donde se define $valor:

Warning: mysql_result() expects at least 2 parameters, 1 given in archivo.php on line 73

1voto

Javi2EE comentado

fallo mio, la función mysql_result espera dos parámetros y solo le hemos pasado uno, el segundo parámetro sería un int que corresponde al numero de la columna que quieres que te muestre, en este caso al tratarse de una consulta COUNT solo hay una columna como respuesta, así que añadiríamos un cero como segundo parametro:

$valor = mysql_result($sql, 0);

Con eso ya debe funcionar sin problema. Edito la respuesta para que quede solucionada del todo la pregunta.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta