Foros del Web » Programando para Internet » PHP »

Crear un top ten

Estas en el tema de Crear un top ten en el foro de PHP en Foros del Web. Hola a todos espero que esten bien, hoy tengo esta pregunta: Como debo hacer mi consulta a la base de manera que me bevuelva cuantas ...
  #1 (permalink)  
Antiguo 25/09/2009, 12:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
Pregunta Crear un top ten

Hola a todos espero que esten bien, hoy tengo esta pregunta:

Como debo hacer mi consulta a la base de manera que me bevuelva cuantas entradas hay de cada tema, por ej; en mi base tengo una tabla con campos por ejemplo asi:

tabla: general
campo1: id
campo2: juego
campo3: nombre

Muy bien, quiero saber cuantas entradas hay en el campo juego, osea si en ese campo hay por ejemplo 100 entradas, de las cuales:

25 pertenecen al juego que se llama COUNTER,
10 al juego RESIDENT,
12 al juego TOTO
13 al juego SARAZA
y asi sucesivamente



Como hago la consulta para que me bevuelva en primer lugar el nombre del juego que tenga mas entradas , en segundo lugar el que tenga menos y asi hasta 10 , (top ten)


Y que pasaria si 2 juegos tienen la misma cantidad de entradas????

Dejo un trozo de codigo para que me agreguen lo que falta:


Código PHP:
$resultado2 = @mysql_query("SELECT juego FROM general"); 

Desde ya muchas gracias y espero que sigan bien
  #2 (permalink)  
Antiguo 25/09/2009, 12:48
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Crear un top ten

Prueba en el buscador, hay muchos scripts de ranking en php
  #3 (permalink)  
Antiguo 25/09/2009, 13:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Crear un top ten

No encuentro nada
  #4 (permalink)  
Antiguo 25/09/2009, 13:38
 
Fecha de Ingreso: mayo-2008
Mensajes: 117
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Crear un top ten

No hace falta sel para eso. puedes usar por ejemplo esta sql:

Código PHP:
$resultado2 = @mysql_query("SELECT juego FROM general LIMIT 10"); 
y te devolverá los máximos 10 en orden ascendente.

Para contar cuantos hay en cada columna puede hacerlo así:

Código PHP:
$resultado2 = @mysql_query("SELECT count(juego) FROM general"); 
y te devolverá cuantas filas hay.
  #5 (permalink)  
Antiguo 25/09/2009, 14:27
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
Cita:
Iniciado por Krato Ver Mensaje
No hace falta sel para eso. puedes usar por ejemplo esta sql:

Código PHP:
$resultado2 = @mysql_query("SELECT juego FROM general LIMIT 10"); 
y te devolverá los máximos 10 en orden ascendente.

Para contar cuantos hay en cada columna puede hacerlo así:

Código PHP:
$resultado2 = @mysql_query("SELECT count(juego) FROM general"); 
y te devolverá cuantas filas hay.


Esto me muestra 10 resultados, pero creo que son los ultimos 10 ingresados:
Código PHP:
$resultado2 = @mysql_query("SELECT juego FROM general LIMIT 10"); 


y esto,
Código PHP:
$resultado2 = @mysql_query("SELECT count(juego) FROM general"); 

no se bien como usarlo, me podrias explicar? gracias por contestar capo

alguien sabe

Lo voy a plantear de otra menera a ver si alguien me lo puede traducir al lenguaje mysql, a ver si me hago entender de esta forma asi:

Lo que quiero es que la consulta haga lo siguiente:

$resultado2 = @mysql_query("contar de mayor a menor cuantas entradas hay repetidas el el campo juego de la tabla general y devolver de mayor a menor, el nombre de ese juego(campo juego) con un limite de 10 items osea 10 juegos");


A ver si esto se puede hacer asi o estoy muy desorientado??
Gracias

Última edición por GatorV; 26/09/2009 a las 16:55
  #6 (permalink)  
Antiguo 26/09/2009, 17:16
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
De acuerdo Respuesta: Crear un top ten

Hola nuevamente espero que esten bien, solucioné el problema de la siguiente manera, despues de investigar un largo rato, gracias a todos por orientarme en lo que quería hacer:




Solucion:
Código PHP:
$resultado2 = @mysql_query ("SELECT juego, COUNT(juego)FROM general  GROUP BY juego ORDER BY COUNT(juego) DESC LIMIT 10"); 

Esto me devuelve un top ten de las entradas en el campo juego,mostrandome los 10 juegos con mas entradas ordenados me mayor a menor, espero que a alguien le sirva... SALUDOS
  #7 (permalink)  
Antiguo 26/09/2009, 17:18
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Crear un top ten

Te sugiero que en vez de usar en el ORDER BY COUNT(juego) sino que uses un alias y este lo llames en el ORDER BY. Por ejemplo

Código PHP:
Ver original
  1. $resultado2 = @mysql_query ("SELECT juego, COUNT(juego) as total FROM general GROUP BY juego ORDER BY total DESC LIMIT 10");
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #8 (permalink)  
Antiguo 26/09/2009, 17:42
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Crear un top ten

Cita:
Iniciado por abimaelrc Ver Mensaje
Te sugiero que en vez de usar en el ORDER BY COUNT(juego) sino que uses un alias y este lo llames en el ORDER BY. Por ejemplo

Código PHP:
Ver original
  1. $resultado2 = @mysql_query ("SELECT juego, COUNT(juego) as total FROM general GROUP BY juego ORDER BY total DESC LIMIT 10");

Amigo probé lo que me dijiste, pero no me devuelve los valores, es decir los totales de entradas de cada juego, me devuelve esto:

Age of Empire 3 ( redes)
Pro evolution soccer 2009 ( redes)
Gears Of War ( redes)
Age of Empires 2: The Conquerors ( redes)
Yu-Gi-Oh ( redes)
FIFA 09 ( redes)
Age of Empires 2 : The Age of the Kings ( redes)
Age of Empire 2 ( redes)
Far Cry 2 ( redes)
Age of Mythology: Titans ( redes)



Cuando lo que yo quiero es que me devuelva esto:


Age of Empire 3 (70 redes)
Pro evolution soccer 2009 (63 redes)
Gears Of War (60 redes)
Age of Empires 2: The Conquerors (53 redes)
Yu-Gi-Oh (40 redes)
FIFA 09 (34 redes)
Age of Empires 2 : The Age of the Kings (33 redes)
Age of Empire 2 (31 redes)
Far Cry 2 (29 redes)
Age of Mythology: Titans (26 redes)


entre parentecis estan los totales de las redes publicadas, que serian en este caso el total de las entradas de cada juego... si ves algun error por favor decimelo, gracias
  #9 (permalink)  
Antiguo 26/09/2009, 17:45
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Crear un top ten

Lo que sucede que al usar el alias ya tienes que usar el alias tambien al mostrarlo en vez de usar juego directamente. Por ejemplo si estas usando mysql_fetch_assoc debes usar
Código PHP:
Ver original
  1. $row = mysql_fetch_assoc($resultado);
  2. echo $row["total"]; //este es el alias de COUNT(juego)
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #10 (permalink)  
Antiguo 26/09/2009, 17:48
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Crear un top ten

Te hago una confesion no sé lo que es una alias en mysql, no sé lo que es row, donde puedo leer algo sobre este tema?
  #11 (permalink)  
Antiguo 26/09/2009, 17:54
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: Crear un top ten

Como no, te sugiero leer este manual para que puedas desenvolverte mejor
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #12 (permalink)  
Antiguo 26/09/2009, 18:11
 
Fecha de Ingreso: mayo-2009
Mensajes: 147
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: Crear un top ten

Gracias amigo abimaelrc
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 00:07.