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

mostrar por mejor calificacion

Estas en el tema de mostrar por mejor calificacion en el foro de Mysql en Foros del Web. lo que pasa es que estoy haciendo un sistema de calificacion de usuarios pero no se como mostrar los resultados según la calificación que tenga ...
  #1 (permalink)  
Antiguo 13/06/2012, 09:28
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
mostrar por mejor calificacion

lo que pasa es que estoy haciendo un sistema de calificacion de usuarios pero no se como mostrar los resultados según la calificación que tenga cada usuario.
Esta es la tabla que hice si alguien me puede ayudar a mejorarla:

Código MySQL:
Ver original
  1. CREATE TABLE IF NOT EXISTS `usuarios` (
  2. `usuario` varchar(80),
  3. `calificacion` varchar(60),
  4. PRIMARY KEY (`id`),
  5. UNIQUE KEY `usuario` (`usuario`)
  6. )

y esta es la sentencia que escribo para mostrar los resultados según la calificación que tiene cada usuario:

Código MySQL:
Ver original
  1. select count(proveedor) calificacion from proveedores group by proveedor order by calificacion desc limit 20

Pero nada mas me muestra 1 1 1
cuando quiero que me muestre: jose roberto carlos
segun por la calificaion que tenga cada usuario
__________________
:cool: aprendiz :cool:
  #2 (permalink)  
Antiguo 13/06/2012, 10:06
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: mostrar por mejor calificacion

Hola towi62:

A vayamos por partes. Primero, ¿qué es lo que almacenas en tu campo Calificación? si se trata de un número entonces ¿por qué utilizas un campo VARCHAR(60)?

Segundo, ¿de donde sacas el campo proveedor y la tabla proveedores? es decir, nos estás colocando el script de creación de la tabla USUARIOS, pero si esta está relacionada de alguna manera con esta otra tabla NO NOS LO DICES, ni pones la estructura de esta tabla, por lo tanto es imposible adivinar que estás haciendo.

Sería conveniente que nos pusieras algunos datos de ejemplo y que con ellos nos muestres qué es lo que quieres obtener, para aclarar cualquier otra duda.

Saludos
Leo.
  #3 (permalink)  
Antiguo 13/06/2012, 10:20
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
Respuesta: mostrar por mejor calificacion

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola towi62:

A vayamos por partes. Primero, ¿qué es lo que almacenas en tu campo Calificación? si se trata de un número entonces ¿por qué utilizas un campo VARCHAR(60)?

Segundo, ¿de donde sacas el campo proveedor y la tabla proveedores? es decir, nos estás colocando el script de creación de la tabla USUARIOS, pero si esta está relacionada de alguna manera con esta otra tabla NO NOS LO DICES, ni pones la estructura de esta tabla, por lo tanto es imposible adivinar que estás haciendo.

Sería conveniente que nos pusieras algunos datos de ejemplo y que con ellos nos muestres qué es lo que quieres obtener, para aclarar cualquier otra duda.

Saludos
Leo.

a disculpa deja arreglo la sentencia

Código MySQL:
Ver original
  1. select count(usuario) calificacion from usuarios group by usuario order by calificacion desc limit 20

Esta si es
__________________
:cool: aprendiz :cool:
  #4 (permalink)  
Antiguo 13/06/2012, 11:01
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: mostrar por mejor calificacion

No respondiste a mi primer pregunta... ¿Qué estás almacenando en tu campo calificación?... esta pregunta es muy importante, pues si ordenas un campo no es lo mismo ordenar números que letras... la ordenación de letras es alfabética, es decir que aunque tengas sólo números almacenados en un campo varchar LA ORDENACIÓN NO ES IGUAL.

Ahora me quedan más dudas, (es por eso que también de pedía que pusieras algunos datos de ejemplo, cosa que tampoco hiciste). la sentencia COUNT se utiliza para saber el número de registros que cumplen con el criterio de agrupación, tal como lo pones indica que UN USUARIO PUEDE TENER MÁS DE UNA CALIFICACIÓN Si es así Cómo determinas qué usuario es el que debes mostrar primero... aquel con mejor promedio o aquel con la calificación individual más alta???

Te repito, me quedaron más dudas que respuestas con tu post... entre más detalles puedas proporcionar más sencillo será tratar de ayudarte, recuerda que trabajamos en el campo de la informática, no en el campo de las ciencias ocultas y adivinación .

Saludos
Leo.
  #5 (permalink)  
Antiguo 13/06/2012, 15:50
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
Respuesta: mostrar por mejor calificacion

pues ya cambie el campo calificacion varchar por `calificacion` MediumInt(255),

y pues lo que quiero es mostrar usuarios segun sus calificaciones.

Acomodandolos desde usuarios con calificacion 10 hasta usuarios con calificacion 0. Ejemplo:

roberto 10
jorge 10
pedro 9
ramon 0
__________________
:cool: aprendiz :cool:

Última edición por towi62; 13/06/2012 a las 16:59
  #6 (permalink)  
Antiguo 13/06/2012, 17:00
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: mostrar por mejor calificacion

¿Estás consciente que esa consulta puede no servir, si las calificaciones están guardadas como VARCHAR?
¿Entendiste por qué?
Por favor, trata de hacer un buen feed-back de las cosas que se te plantean. Es frustrante tratar de ayudar a alguien que no se molesta en responder lo que se le pregunta.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 13/06/2012, 17:47
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
Respuesta: mostrar por mejor calificacion

muchas grasias por los que me han querido ayudar, pero ya medio solucione el problema con esta sentencia:

Código MySQL:
Ver original
  1. "SELECT COUNT(*) as calificacion, usuario
  2.    FROM usuarios
  3.    GROUP BY usuario asc
  4.    HAVING calificacion > 0 ORDER BY calificacion asc";

y me muestra los usuarios según calificación tenga pero no me muestra las calificaciones.

ejemplo:
jorge tiene la calificacion 10
roberto tambien tiene calificacion 10
luis tiene calificacion 7

pero me muestra:
jorge 1 roberto 1 luis 1
en ves de mostrarme:
jorge 10
roberto 10
luis 7


y la variable varchar ya la hice MediumInt
__________________
:cool: aprendiz :cool:
  #8 (permalink)  
Antiguo 13/06/2012, 21:29
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: mostrar por mejor calificacion

No te muestra la calificación porque no lo estás pidiendo. Lo que haces es indicar que te cuente las calificaciones de cada uno.
Y además le dices que las ordene de menor a mayor..., así que tampoco las mostrará como dices.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #9 (permalink)  
Antiguo 14/06/2012, 07:58
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: mostrar por mejor calificacion

Hola de nuevo:

Creo que no estás poniendo atención a lo que queremos decirte... y así va a resultar imposible ayudarte. En mi segundo post te comenté esto:

Cita:
la sentencia COUNT se utiliza para saber el número de registros que cumplen con el criterio de agrupación
y también gnzsoloyo te lo vuelve a confirmar:

Cita:
Lo que haces es indicar que te cuente las calificaciones de cada uno.
El 1 que aparece en tu consulta ES JUSTAMENTE PORQUE CADA PERSONA TIENE 1 CALIFICACION... Por lo tanto, la función COUNT NO SIRVE PARA LO QUE QUIERES HACER.

También te pedí que nos dijeras si en tu tabla una persona puede tener más de una calificación, cosa que tampoco contestaste, suponiendo que SÓLO EXISTA UNA CALIFICACIÓN POR PERSONA lo que tendrías que hacer es simplemente:

Código MySQL:
Ver original
  1. SELECT usuario, calificacion
  2. FROM usuarios
  3. ORDER BY calificacion DESC

Saludos
Leo.
  #10 (permalink)  
Antiguo 15/06/2012, 08:13
 
Fecha de Ingreso: abril-2005
Mensajes: 253
Antigüedad: 19 años
Puntos: 0
Respuesta: mostrar por mejor calificacion

Cita:
Iniciado por leonardo_josue Ver Mensaje
Hola de nuevo:

Creo que no estás poniendo atención a lo que queremos decirte... y así va a resultar imposible ayudarte. En mi segundo post te comenté esto:



y también gnzsoloyo te lo vuelve a confirmar:



El 1 que aparece en tu consulta ES JUSTAMENTE PORQUE CADA PERSONA TIENE 1 CALIFICACION... Por lo tanto, la función COUNT NO SIRVE PARA LO QUE QUIERES HACER.

También te pedí que nos dijeras si en tu tabla una persona puede tener más de una calificación, cosa que tampoco contestaste, suponiendo que SÓLO EXISTA UNA CALIFICACIÓN POR PERSONA lo que tendrías que hacer es simplemente:

Código MySQL:
Ver original
  1. SELECT usuario, calificacion
  2. FROM usuarios
  3. ORDER BY calificacion DESC

Saludos
Leo.
Si muchas grasias esa era la sentencia que ocupaba.
Y disculpa por no saberme explicar pero pues nunca estudie solo programo lo que me van enseñando por internet.
__________________
:cool: aprendiz :cool:
  #11 (permalink)  
Antiguo 15/06/2012, 14:44
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: mostrar por mejor calificacion

Hola de nuevo:

No tienes por que disculparte, simplemente te pedimos que para la otra pongas un poco más de atención en lo que te decimos. Y también ten cuidado en contestar TODAS LAS PREGUNTAS O DUDAS QUE TE PIDAMOS QUE ACLARES. Muchas veces resulta imposible dar una respuesta puntual si no contamos con todos los elementos para identificar exactamente cual es el problema.

Me parece excelente que seas autodidacta, aunque tengo que advertirte de una vez que sin la ayuda de un maestro o tutor de puedes enfrentar a muchísimos problemas... Los foros son buenos y te pueden servir para resolver problemas puntuales, pero sin una buena base teórica te puede costar mucho trabajo hacer consultas complejas...

Saludos
Leo.

Etiquetas: calificacion, select, tabla
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 15:18.