Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
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.
Mensajes: 6,664
Temas: 81
Registro en: Jan 2014
Reputación:
68
10/11/2016, 11:27 PM
(Última modificación: 10/11/2016, 11:27 PM por kikizon2.)
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_ReadResult( Query , 0 ); SQL_NextRow(Query); } }
Algo así me imagino...
► NO DOY AYUDA VIA MENSAJE PRIVADO ◄
* Si requieres algún servicio de pago puedes contactarme vía MP o en mi facebook
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
(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_ReadResult( Query , 0 ); 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.
Mensajes: 181
Temas: 3
Registro en: Oct 2013
Reputación:
15
Código PHP: SELECT SUM(IF(nombre = 'Nombre Magico', numero, 0)) AS 'total' FROM test WHERE nombre='Nombre Magico' GROUP BY nombre
?
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
Mensajes: 723
Temas: 23
Registro en: May 2014
Reputación:
22
Código PHP: SELECT id, nombre, SUM(numero) FROM 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.
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
(11/11/2016, 12:36 AM)KISKE escribió: Código PHP: SELECT id, nombre, SUM(numero) FROM table GROUP BY nombre;
AHII ESTAAA, GRACIAS.
Esta fue la solución que necesitaba:
Código PHP: SELECT id, nombre, SUM(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
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
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
Mensajes: 3,284
Temas: 41
Registro en: Jan 2014
Reputación:
28
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í.
Mensajes: 4,637
Temas: 73
Registro en: Oct 2013
Reputación:
44
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.
|