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

Se puede hacer un ORDER BY por cantidad de registros iguales?

Estas en el tema de Se puede hacer un ORDER BY por cantidad de registros iguales? en el foro de Mysql en Foros del Web. Hola, bueno mi pregunta seria esa. Ejemplo: -En un campo que se llama colores tengo los siguientes registros: rojo rojo azul rojo verde azul Entonces ...
  #1 (permalink)  
Antiguo 06/04/2011, 02:27
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Pregunta Se puede hacer un ORDER BY por cantidad de registros iguales?

Hola, bueno mi pregunta seria esa.

Ejemplo:
-En un campo que se llama colores tengo los siguientes registros:

rojo
rojo
azul
rojo
verde
azul


Entonces si pongo GROUP BY color ORDER BY color DESC

Me sale asi.

verde
rojo
azul


Pero yo quisiera que salga asi:

rojo
azul
verde


debido a que rojo tiene 3 registros, azul 2 registros, y verde 1 registro.

Se puede? Alguna sugerencia?
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena
  #2 (permalink)  
Antiguo 06/04/2011, 02:52
 
Fecha de Ingreso: marzo-2010
Ubicación: Barcelona
Mensajes: 657
Antigüedad: 14 años, 1 mes
Puntos: 26
Respuesta: Se puede hacer un ORDER BY por cantidad de registros iguales?

No estoy seguro que funcione de esta manera a causa del Sum, pero puedes provarlo:
SELECT Colores, SUM(Colores) as NumColor FROM tabla GROUP BY Colores ORDER BY NumColor DESC;

Si no sale dimelo y te digo una manera que seguro que funciona, pero habrás de hacer algunos cambios.
PD: http://www.asptutor.com/sql/sql4.asp#4.1
__________________
Siempre fallaras el 100% de los tiros que no te atrevas a lanzar.
El 98% de los adolescentes han fumado, si eres del dichoso 2% que no lo ha hecho, copia y pega esto en tu firma.
  #3 (permalink)  
Antiguo 06/04/2011, 06:26
 
Fecha de Ingreso: noviembre-2009
Mensajes: 226
Antigüedad: 14 años, 5 meses
Puntos: 19
Respuesta: Se puede hacer un ORDER BY por cantidad de registros iguales?

Creo que si preguntas lo mismo en el foro de MySQL recibirás respuestas
__________________
Mi blog: magdkudama.com

Mi clase de validación de datos: magdkudama.com/validation
  #4 (permalink)  
Antiguo 06/04/2011, 14:11
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Se puede hacer un ORDER BY por cantidad de registros iguales?

Cita:
Iniciado por Vallu Ver Mensaje
No estoy seguro que funcione de esta manera a causa del Sum, pero puedes provarlo:
SELECT Colores, SUM(Colores) as NumColor FROM tabla GROUP BY Colores ORDER BY NumColor DESC;

Si no sale dimelo y te digo una manera que seguro que funciona, pero habrás de hacer algunos cambios.
PD: http://www.asptutor.com/sql/sql4.asp#4.1
Trate como me dijiste Vallu, pero el primer regsitro sale sin nombre y me dice que hay cero registros de ese. Asi:

(0)
azul (2)
verde (1)


El resultado que yo busco seria:

rojo (3)
azul (2)
verde (1)
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena
  #5 (permalink)  
Antiguo 06/04/2011, 14:34
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Tema movido desde PHP a Mysql
  #6 (permalink)  
Antiguo 06/04/2011, 15:20
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 3 meses
Puntos: 447
Respuesta: Se puede hacer un ORDER BY por cantidad de registros iguales?

Hola Camarex:

Lo que tienes que hacer es un COUNT agrupando por el campo color, al final sólo tendrías que ordenar por el campo count, quedaría así;


Código MySQL:
Ver original
  1. mysql> create table colores (color varchar(10));
  2. Query OK, 0 rows affected (0.08 sec)
  3.  
  4. mysql> insert into colores values ('rojo'), ('rojo'), ('azul'), ('rojo'), ('verd
  5. e'), ('azul');
  6. Query OK, 6 rows affected (0.03 sec)
  7. Records: 6  Duplicates: 0  Warnings: 0
  8.  
  9. mysql> select * from colores;
  10. +-------+
  11. | color |
  12. +-------+
  13. | rojo  |
  14. | rojo  |
  15. | azul  |
  16. | rojo  |
  17. | verde |
  18. | azul  |
  19. +-------+
  20. 6 rows in set (0.00 sec)
  21.  
  22. mysql> select color, count(*) total from colores group by 1 order by 2 desc;
  23. +-------+-------+
  24. | color | total |
  25. +-------+-------+
  26. | rojo  |     3 |
  27. | azul  |     2 |
  28. | verde |     1 |
  29. +-------+-------+
  30. 3 rows in set (0.00 sec)
  31.  
  32. mysql> select color from (
  33.     -> select color, count(*) total from colores group by color) T
  34.     -> order by total desc;
  35. +-------+
  36. | color |
  37. +-------+
  38. | rojo  |
  39. | azul  |
  40. | verde |
  41. +-------+
  42. 3 rows in set (0.00 sec)

La primer consulta te regresa dos campos, uno con el color y otro con el número de veces que se repite ese color. En el segundo caso hago una subconsulta para extraer sólo el campo color pero en el orden deseado. Creo que cualquiera de las dos consultas te debe. Haz la prueba y nos comentas

Saludos
Leo
  #7 (permalink)  
Antiguo 06/04/2011, 16:40
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Se puede hacer un ORDER BY por cantidad de registros iguales?

Muchas gracias leonardo_josue

Las dos consultas que me propones funcionan muy bien ejecutandolas en PhpMyAdmin. Me gusta mas la primera. MIL GRACIAS.


Ahora Pongo el codigo PHP que estoy usando para imprimir la consulta sql.

Código PHP:
$res=mysql_query("SELECT color, count(*) total FROM colores GROUP BY 1 ORDER BY 2 desc" ,$con);
while (
$reg=mysql_fetch_row($res))
        {
            foreach(
$reg as $valor)
            echo 
"$valor";
        }
mysql_close($con); 

Me imprime asi:

rojo
3
azul
2
verde
1

Si no es mucha molestia, me pudieras decir como le hago para que los numeros salgan a la derecha de cada color?

Gracias.
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena
  #8 (permalink)  
Antiguo 06/04/2011, 17:04
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, 5 meses
Puntos: 2658
Respuesta: Se puede hacer un ORDER BY por cantidad de registros iguales?

Cita:
Si no es mucha molestia, me pudieras decir como le hago para que los numeros salgan a la derecha de cada color?
Eso es tema de programación en PHP. Consulta cada tema en su foro.
__________________
¿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 06/04/2011, 17:20
Avatar de Camarex  
Fecha de Ingreso: enero-2003
Ubicación: Monterrey NL
Mensajes: 148
Antigüedad: 21 años, 3 meses
Puntos: 0
Respuesta: Se puede hacer un ORDER BY por cantidad de registros iguales?

Cita:
Iniciado por gnzsoloyo Ver Mensaje
Eso es tema de programación en PHP. Consulta cada tema en su foro.
Ok, consultado en el foro de PHP

http://www.forosdelweb.com/f18/como-...nsulta-901969/
__________________
Si el empleo fuera como rentar una casa, entonces no rentes para siempre y busca la manera de Comprar. ;-)
Frase: Edgar Camarena

Etiquetas: cantidad, iguales, order, php, registros
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 01:08.