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

tomar lso 10 registros de mayor numero de acuerdo al codigo

Estas en el tema de tomar lso 10 registros de mayor numero de acuerdo al codigo en el foro de Mysql en Foros del Web. Hola a Todos : Tengo este SQL @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT  a . codigoactividadcita , b . descripcion_actividad , a . codigo_diagnostico ...
  #1 (permalink)  
Antiguo 08/01/2013, 15:33
Avatar de mager3  
Fecha de Ingreso: junio-2012
Ubicación: Medellin
Mensajes: 318
Antigüedad: 11 años, 9 meses
Puntos: 4
Información tomar lso 10 registros de mayor numero de acuerdo al codigo

Hola a Todos :

Tengo este SQL
Código SQL:
Ver original
  1. SELECT  a.codigoactividadcita,b.descripcion_actividad, a.codigo_diagnostico,c.nombre_diagnostico,contar
  2. FROM causas_consulta a, actividades_citas b,diagnosticos c
  3. WHERE a.codigoactividadcita=b.cod_actividad
  4. AND a.codigo_diagnostico=c.id_diagnostico
  5. AND codigoactividadcita IN (03,08,12)

Lo que yo tenfo es un codigo de actividad cualquiera, en este caso digamos 03,08,12

y un campo que se llama contar que tiene dentro del codigo de actividad el numero de veces que un diagnostico se repite

Codigoactividadcita codigodiagnostico contar
08 Z01 12
08 E200 15
08 Z0134 45
08 Z017 4
12 Z0134 12
12 E200 23
12 Z01 23
12 Z017 12
03 F0134 12
03 N0134 23


Tomar los 5 primeros registros de cada CODIGOACTIVIDADCITA que tenga el mayor contar
  #2 (permalink)  
Antiguo 10/01/2013, 03:51
Avatar de antoniopol  
Fecha de Ingreso: agosto-2012
Ubicación: Valladolid
Mensajes: 114
Antigüedad: 11 años, 7 meses
Puntos: 21
Respuesta: tomar lso 10 registros de mayor numero de acuerdo al codigo

Quizas este enlace te sirva para sacar los 10 primeros de cada cosa manipulando la variable que crea antes llamada rank.
http://stackoverflow.com/questions/2...mber-on-select
__________________
>> Blog de desarrollo web.
>> @antoniopol06 amante de la Web =D
  #3 (permalink)  
Antiguo 10/01/2013, 07:14
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: tomar lso 10 registros de mayor numero de acuerdo al codigo

Si sabes el número de valores lo conoces, puedes unir mediante dos UNION ALL las tres consultas con su filtro y ordendas, con su LIMIT, y con subconsulta las reúnes. Espero que tu versión de MySQL te lo permita.

Pero las uniones entre tablas hazlas con INNER JOIN

Sé que hay otras opciones. Te pongo una sintaxis incompleta para que hagas pruebas tú.

Código MySQL:
Ver original
  1. SELECT t1. campo1, t1.caomp2, t1 contar FROM ((SELECT campo1, campo2, contar FROM tabla1 INNER JOIN tabla2 ON tabla1.codigoactividad = tabla2.cod. INNER JOIN....
  2. WHERE codigoactividadcita = '03' ORDER BY contar DESC LIMIT 10)
  3. (SELECT campo1, campo2, contar FROM tabla1 INNER JOIN tabla2 ON tabla1.codigoactividad = tabla2.cod. INNER JOIN....
  4. WHERE codigoactividadcita = '08' ORDER BY contar DESC LIMIT 10)
  5. (SELECT campo1, campo2, contar FROM tabla1 INNER JOIN tabla2 ON tabla1.codigoactividad = tabla2.cod. INNER JOIN....
  6. WHERE codigoactividadcita = '12' ORDER BY contar DESC LIMIT 10))T1

Última edición por jurena; 11/01/2013 a las 12:59
  #4 (permalink)  
Antiguo 10/01/2013, 11:17
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años
Puntos: 300
Respuesta: tomar lso 10 registros de mayor numero de acuerdo al codigo

Una solución con variables, sacada de la red y adaptada a tu caso:

Código MySQL:
Ver original
  1. SELECT Codigoactividadcita, codigodiagnostico, contar
  2.  
  3. SELECT causas_consulta. * , @rn :=
  4. CASE WHEN @category = Codigoactividadcita
  5. THEN @rn +1
  6. END AS rn, @category := Codigoactividadcita
  7. FROM causas_consulta, (
  8.  
  9. SELECT @rn :=0, @category := NULL
  10. ) AS vars
  11. WHERE Codigoactividadcita
  12. IN (
  13. '03', '08', '12'
  14. )
  15. ORDER BY Codigoactividadcita, contar DESC
  16. ) AS T1
  17. WHERE rn <=10

Última edición por jurena; 10/01/2013 a las 11:30

Etiquetas: mysql+php
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 05:23.