[MySQL] ¿Se pueden hacer estas consultas?
#1
Hola a todos,

tengo unas dudas al respecto de como podría hacer un tipo de consultas, paso a decirles:

Por ej:

Tabla:
Campo: id (autoincrement)
Campo: Nombre (string)
Campo: Numero (int)

Yo en la tabla tengo que los datos que se van agregando, sin importar si los datos que se van agregando, alguno de ellos coincide con alguno que ya este previamente. Quiero saber si existe la posibilidad de extraer los datos agrupados de una manera que me sume el campo "numero". Así seria:


id | nombre | numero

1 | FEDERICOMB | 100
2 | Donald | 55
3 | Patito | 73
4 | FEDERICOMB | 145

Y yo quiero que me sume el campo "numero" según todos los campos iguales "nombre", osea que yo extraigo del campo nombre FEDERICOMB y quiero que me sume el 100 y 145 y así con todas las veces que exista el nombre FEDERICOMB en los registros.

No se si me llegue a explicar, me hice medio un embole. Gracias de antemano.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#2
Seria haciendo un while, no ?

tipo:

consulta;
Código:
SELECT *numero* FROM *table* WHERE *nombre* = "FEDERICOMB"

en el handler.

Código PHP:
new varparalasuma 0;

if( 
SQL_NumResults(Query) )
{
    while( 
SQL_MoreResults(Query) )
    {
        
varparalasuma += SQL_ReadResultQuery );
        
SQL_NextRow(Query);
    }


Algo así me imagino...
[Imagen: bvpq9q-6.png]

NO DOY AYUDA VIA MENSAJE PRIVADO

* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Responder
#3
(10/11/2016, 11:27 PM)kikizon2 escribió: Seria haciendo un while, no ?

tipo:

consulta;
Código:
SELECT *numero* FROM *table* WHERE *nombre* = "FEDERICOMB"

en el handler.

Código PHP:
new varparalasuma 0;

if( 
SQL_NumResults(Query) )
{
    while( 
SQL_MoreResults(Query) )
    {
        
varparalasuma += SQL_ReadResultQuery );
        
SQL_NextRow(Query);
    }


Algo así me imagino...

Hmm no y si, osea no es para Pawn es para PHP y en realidad lo que más buscaba era si en una consulta se puede poner de alguna forma para que directamente extraiga los datos automáticamente.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#4
Código PHP:
SELECT SUM(IF(nombre 'Nombre Magico'numero0)) AS 'total' FROM test WHERE nombre='Nombre Magico' GROUP BY nombre 
?
[Imagen: giphy.webp]

Panda Nuestro
Sistema de Cuentas MySQL/SQLite
Discord: FluffyDeveloper#4753

meTaLiCroSS escribió: Pero sin picarse po, todavía te molesta que te haya mandado a la mierda porque querias plugins de mi server? Mírate, seguí programando weas mulas después de años, tení que ser harto penca para esta wea, das pura pena Corazón

(22/01/2021, 02:55 PM)Skylar escribió: dios como me enferma que digas plugins cuando hablas de un solo plugin pendejo re pelotudo
Responder
#5
Código PHP:
SELECT idnombreSUM(numeroFROM table GROUP BY nombre

Por otro lado, te recomiendo utilizar alguna especie de campo llamado 'account_id' o algo similar que sea int, trabajar sobre strings en consultas no es buena práctica.
Responder
#6
(11/11/2016, 12:36 AM)KISKE escribió:
Código PHP:
SELECT idnombreSUM(numeroFROM table GROUP BY nombre

AHII ESTAAA, GRACIAS.

Esta fue la solución que necesitaba:
Código PHP:
SELECT idnombreSUM(numero) AS total FROM table GROUP BY nombre ORDER BY total DESC LIMIT 15



(11/11/2016, 12:36 AM)KISKE escribió: Por otro lado, te recomiendo utilizar alguna especie de campo llamado 'account_id' o algo similar que sea int, trabajar sobre strings en consultas no es buena práctica.

Claro, en realidad yo quería que seleccione los datos automáticamente ordenados, en una consulta no iba a poner ningún texto para seleccionar. Muchas gracias por la ayuda Rainbow
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#7
Dale bola a lo que dijo Kiske... no es buena práctica trabajar así sobre strings. Desconocemos tu estructura de tablas o el propósito de eso, pero el "nombre" solo debería estar en la tabla "users", todas las demás tablas que hagan referencia la usuario deben manejar el "id de usuario", después trabajando con JOIN podés obtener el nombre...

Ejemplo:
Tabla: users
id_user int
nombre str
password str

Tabla: puntos
id int
id_user int
puntos int

Para obtener el resultado que vos querés sería:
Código:
SELECT u.nombre, SUM(p.puntos) AS puntos FROM puntos JOIN users ON (u.id_user = p.id_user) GROUP BY p.id_user ORDER BY p.puntos DESC LIMIT 15
[Imagen: paypalqr.png]
Responder
#8
Entiendo, y sabía más o menos que no era buena idea trabajar sobre strings, osea para un sistema de cuentas no lo uso así, cada usuario tiene su ID único y me baso en eso para modificar sus datos. Pero lo que acá necesitaba era que realice una búsqueda automática, ya que no es un sistema de cuentas, solo son estadísticas que se guardan al finalizar la partida y se van guardando según como jugaron esa partida y quedan como datos históricos. Por eso les comentaba que necesitaba una consulta que me agrupe los datos iguales segun el campo que guarda el nombre.

La estructura de la tabla es similar a esto:

id (autoincrement) // solo para el indice de la tabla
partida_id (int) // para saber que # de partida fue
nombre (string) // nombre..
matados..
muertes..
etc,...

Obviamente que si se basara en un sistema de cuentas (con o sin password) utilizaría su id de registro para sacar datos, pero en este caso no es así y no tengo forma de cambiar eso ya que el sistema esta hecho así.
Believe, be yourself and don't hold on to just one dream ❤

https://github.com/FEDERICOMB96
Responder
#9
Da igual si es un sistema de cuentas o de estadisticas. Tendrías que tener un id para cada nombre en otra tabla y hacerlo como mencioné en el ejemplo.
[Imagen: paypalqr.png]
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)