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

Limitar la cantidad de veces que aparece un elemento según una columna

Estas en el tema de Limitar la cantidad de veces que aparece un elemento según una columna en el foro de Mysql en Foros del Web. Hola. No se como explicarlo pero basicamente lo que necesito es hacer un "distinct" de más de un elemento. El distinct comun te evita la ...
  #1 (permalink)  
Antiguo 01/12/2008, 06:08
Avatar de hshadow  
Fecha de Ingreso: abril-2008
Mensajes: 42
Antigüedad: 16 años
Puntos: 0
Limitar la cantidad de veces que aparece un elemento según una columna

Hola.

No se como explicarlo pero basicamente lo que necesito es hacer un "distinct" de más de un elemento. El distinct comun te evita la aparicion de un elemento más de una vez; yo necesito limitar las apariciones a una cantidad especifica (ej. 2 o 3 veces tiene permitido repetirse).

Sé que podría hacerlo con arrays y filtrarlo con algunos contadores y otras funciones pero esa tabla va en aumento y hacer un "select *" me comeria cada vez mas memoria y haría al sitio cada vez más lento; por lo que debo tratar se hacer el filtro desde la misma base para poder finalizar el query co un "limit 0, X" y ya tener los elementos que necesito.

Ej:
tenemos una tabla con 3 columnas donde la uno puede contener varias veces el mismo valor y hacemos:

select distinct columna1 from tabla

Esto devuelve todos los valores de esa columna de la tabla sin repetirse, no?

Bueno, yo nesecito algo como esto:

select distinct(2) columna1 from tabla

donde el "(2)" es un marcador de la cantidad de veces que quiero permitir que se repita el elemento.

Gracias de antemano.

Hasta luego.
  #2 (permalink)  
Antiguo 01/12/2008, 08:30
Avatar de Lord Kazuky  
Fecha de Ingreso: junio-2006
Ubicación: 7F.00.00.01
Mensajes: 123
Antigüedad: 17 años, 10 meses
Puntos: 5
Respuesta: Limitar la cantidad de veces que aparece un elemento según una columna

Por que querrias hacer algo asi?

Sin saber mucho de los detalles creo que se podria hacer con alguna subconsulta utilizando LIMIT y GROUP BY, pero pues pon un ejemplo de lo que quieres hacer a ver si en verdad aplica o no.
__________________
Saludos.
"Cualquier tonto puede escribir código que un computador entiende. Los buenos programadores escriben código que los humanos pueden entender. ;)"
  #3 (permalink)  
Antiguo 01/12/2008, 10:05
Avatar de hshadow  
Fecha de Ingreso: abril-2008
Mensajes: 42
Antigüedad: 16 años
Puntos: 0
Respuesta: Limitar la cantidad de veces que aparece un elemento según una columna

Hola.

Es un sistema de votacion.

Tengo que hacer un top20 de imagenes. El problema es que los usuarios pueden tener cuantas quieran y yo quiero limitar las imagenes a como mucho 2 del mismo usuario. La consulta sería "order by score desc limit 0, 20" pero no se como limitar a 2 la cantidad de veces que aparece el mismo usuario.

Gracias.

Hasta luego.
  #4 (permalink)  
Antiguo 03/12/2008, 14:11
Avatar de DBMark  
Fecha de Ingreso: mayo-2008
Ubicación: Oxford
Mensajes: 35
Antigüedad: 15 años, 11 meses
Puntos: 6
Respuesta: Limitar la cantidad de veces que aparece un elemento según una columna

Este codigo devuelve los 10 primeros, salvo que limite a dos la cantidad de veces que aparece el mismo usuario.

Cita:
select c.usuario, c.score from crackscore c
where 1 = (select count(*) from crackscore c2 where c2.usuario = c.usuario)
or 2 > (select count(*) from crackscore c3
where c3.usuario = c.usuario and c3.score > c.score)
order by c.score desc limit 10
(No se si funciona rapido con tablas grande)

Saludos...
  #5 (permalink)  
Antiguo 04/12/2008, 04:22
Avatar de hshadow  
Fecha de Ingreso: abril-2008
Mensajes: 42
Antigüedad: 16 años
Puntos: 0
Respuesta: Limitar la cantidad de veces que aparece un elemento según una columna

Listo. Gracias.
  #6 (permalink)  
Antiguo 04/12/2008, 13:08
Avatar de a n g e l u s  
Fecha de Ingreso: enero-2006
Ubicación: Chile
Mensajes: 237
Antigüedad: 18 años, 3 meses
Puntos: 1
De acuerdo Respuesta: Limitar la cantidad de veces que aparece un elemento según una columna

HOLA,

Sabes tengo una consulta muy similar a la tuya, y al parecer tu resolviste tu duda con la consulta que te enviaron.

mi duda es esta http://www.forosdelweb.com/f86/selec...-tabla-651071/.

Si fueras tan amable de explicar o colocar la consulta con la que resolviste, ya que no entiendo la de DBMark.

gracias
__________________
Atte,
A n g e l u s
Concepción - Chile
más vale respuestas bien pensadas, que 7000 post
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 10:25.