Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Problema al listar campos

Estas en el tema de Problema al listar campos en el foro de Mysql en Foros del Web. Tengo una tabla alumnos de tal manera: id | Nombre | clase | horas | puntos| ---------------------------------------------- 0 | Luis | A | 12 | ...
  #1 (permalink)  
Antiguo 27/10/2008, 13:56
 
Fecha de Ingreso: diciembre-2005
Mensajes: 16
Antigüedad: 18 años, 4 meses
Puntos: 0
Problema al listar campos

Tengo una tabla alumnos de tal manera:

id | Nombre | clase | horas | puntos|
----------------------------------------------
0 | Luis | A | 12 | 23 |
1 | Juan | B | 6 | 12 |
2 | Luis | A | 21 | 71 |
3 | Alberto | A | 15 | 11 |

etc, etc.

Bien. Quiero que se listen los 15 que tengan las máximas puntuaciones (puntos), pero sin que se repitan en la clase si el Nombre es el mismo y en orden ascendente.

En este caso, quedaría:

Luis | A | 21 | 71
Juan | B | 6 | 12
Alberto| A | 15 | 11

Uso lo siguiente:

Código:
$resultado = mysql_query("SELECT DISTINCT nombre, clase, horas, puntos FROM alumnos order by puntos DESC LIMIT 0, 15")
Esto me saca :

Luis | A | 21 | 71
Luis | A | 12 | 23
Juan | B | 6 | 12
Alberto| A | 15 | 11

No doy con la sentencia correcta.

Saludos
  #2 (permalink)  
Antiguo 27/10/2008, 14:57
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Problema al listar campos

prueba esta:
Código sql:
Ver original
  1. SELECT a.nombre, a.clase, a.horas, a.puntos
  2. FROM alumnos a
  3. INNER JOIN (
  4.  
  5. SELECT id, puntos
  6. FROM alumnos
  7. ORDER BY puntos DESC
  8. )t1 ON a.id = t1.id
  9. GROUP BY a.nombre
  10. ORDER BY a.puntos DESC  LIMIT 15

Última edición por jurena; 27/10/2008 a las 15:05
  #3 (permalink)  
Antiguo 27/10/2008, 15:43
 
Fecha de Ingreso: diciembre-2005
Mensajes: 16
Antigüedad: 18 años, 4 meses
Puntos: 0
De acuerdo Respuesta: Problema al listar campos

Cita:
Iniciado por jurena Ver Mensaje
prueba esta:
Código sql:
Ver original
  1. SELECT a.nombre, a.clase, a.horas, a.puntos
  2. FROM alumnos a
  3. INNER JOIN (
  4.  
  5. SELECT id, puntos
  6. FROM alumnos
  7. ORDER BY puntos DESC
  8. )t1 ON a.id = t1.id
  9. GROUP BY a.nombre
  10. ORDER BY a.puntos DESC  LIMIT 15
Eres un AS Jurena, funcionó!.

Muchas gracias.
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 14:22.