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

Ayuda, seleccionar sólo 5 datos BD

Estas en el tema de Ayuda, seleccionar sólo 5 datos BD en el foro de Bases de Datos General en Foros del Web. Hola, tengo una tabla con registros que tienen un campo tipo, y quisiera hacer una consulta que me muestre los 5 primeros registros de cada ...
  #1 (permalink)  
Antiguo 22/03/2010, 04:27
indicape
Invitado
 
Mensajes: n/a
Puntos:
Ayuda, seleccionar sólo 5 datos BD

Hola, tengo una tabla con registros que tienen un campo tipo, y quisiera hacer una consulta que me muestre los 5 primeros registros de cada tipo, esto se puede hacer¿?

espero contestación, muchas gracias de antemano.
  #2 (permalink)  
Antiguo 22/03/2010, 05:45
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: Ayuda, seleccionar sólo 5 datos BD

Postea el ejemplo de lo que dices y si es posible dinos en qué DBMS estás trabajando, porque yo, al menos, no entiendo de qué estás hablando...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 22/03/2010, 06:58
indicape
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda, seleccionar sólo 5 datos BD

perdón, trabajo con Mysql y lo que necesito es mostrar de una tabla los 5 primeros registros de cada tipo.
  #4 (permalink)  
Antiguo 22/03/2010, 07:20
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: Ayuda, seleccionar sólo 5 datos BD

Genial. Para mostrar los 5 primeros registros simplemente terminas la sentencia con un LIMIT 5, pero si no nos posteas la estructura, o nos explicas claramente a qué te refieres con "tipos", no podremos ayudarte mucho.
La estructura nos guiaría mejor para saber si hay que hacer subconsultas, o comparaciones y/o agrupamientos.
Tu descripción no aclara cómo es que distingues los "tipos" y tampoco a qué le llamas "tipos".
Explicate un poco mejor...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 22/03/2010, 08:35
indicape
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda, seleccionar sólo 5 datos BD

voy de nuevo y perdón por la ambiguedad...

tengo registros en una tabla que contienen un campo tipo (con valores como 1, 2, 3, 4 , 5...)

lo que necesito es hacer una consulta a esa tabla y coger sólo los 5 primeros registros de cada tipo.

Es decir si la tabla contiene:

ID- NOMBRE- TIPO
1 - pedro - 2
2 - juan -2
3 - angel - 1
4 - luis - 1
5 - pablo - 4
6 - miguel - 3
7 - sonia - 2
8 - amparo - 2
9 - raúl - 2
etc, etc

tendría que mostrarme
los 5 primeros registros del tipo 1 (angel, luis...y los que hubiese más adelante hasta 5)
los 5 primeros registros del tipo 2 (pedro, juan, sonia, amparo y raúl)
los 5 primeros registros del tipo 3 (miguel... y los qe hubiese más adelante)
los 5 primeros registros del tipo 4 (pablo.... y los que hubiese más adelante)

y así sucesivamente con todos los tipos,


resumiendo, mostrar los 5 primeros registros de cada tipo.

Espero haberme explicado, ya no sé que más poneros...

ah y mil gracias
  #6 (permalink)  
Antiguo 23/03/2010, 04:08
indicape
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda, seleccionar sólo 5 datos BD

Cita:
Iniciado por indicape Ver Mensaje
voy de nuevo y perdón por la ambiguedad...

tengo registros en una tabla que contienen un campo tipo (con valores como 1, 2, 3, 4 , 5...)

lo que necesito es hacer una consulta a esa tabla y coger sólo los 5 primeros registros de cada tipo.

Es decir si la tabla contiene:

ID- NOMBRE- TIPO
1 - pedro - 2
2 - juan -2
3 - angel - 1
4 - luis - 1
5 - pablo - 4
6 - miguel - 3
7 - sonia - 2
8 - amparo - 2
9 - raúl - 2
etc, etc

tendría que mostrarme
los 5 primeros registros del tipo 1 (angel, luis...y los que hubiese más adelante hasta 5)
los 5 primeros registros del tipo 2 (pedro, juan, sonia, amparo y raúl)
los 5 primeros registros del tipo 3 (miguel... y los qe hubiese más adelante)
los 5 primeros registros del tipo 4 (pablo.... y los que hubiese más adelante)

y así sucesivamente con todos los tipos,


resumiendo, mostrar los 5 primeros registros de cada tipo.

Espero haberme explicado, ya no sé que más poneros...

ah y mil gracias


ayuuuuuda please!!!!!
  #7 (permalink)  
Antiguo 23/03/2010, 04:10
Avatar de morior  
Fecha de Ingreso: agosto-2009
Ubicación: Barcelona
Mensajes: 437
Antigüedad: 14 años, 9 meses
Puntos: 12
Respuesta: Ayuda, seleccionar sólo 5 datos BD

Así de buenas a primeras se me ocurre.

Código PHP:
for($i=0;$i<$cantidad_de_tipos;$i++){

$consulta "SELECT FROM tutabla
WHERE tipo='$i'
LIMIT 5"
;

Si no es eso lo que necesitas a ver si lo podemos ir orientando.
__________________
Juego de navegador online
  #8 (permalink)  
Antiguo 23/03/2010, 05:43
indicape
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda, seleccionar sólo 5 datos BD

sois más majos que las pesetas.... leche!!!

voy a probarlo.

  #9 (permalink)  
Antiguo 23/03/2010, 05:53
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: Ayuda, seleccionar sólo 5 datos BD

Mira, el problema que tienes viene por dos partes:
Por un lado, no sabes, o al menos se supone que no sabes, cuántos tipos hay inicialmente en esta relación, por lo que la consulta debe ser dinámica (establecerse para un resultado variable de tipos).
Por otro lado, lo que tu quieres no es el tipo, sino la lista de los 5 primeros de cada tipo, con lo que un simple LIMIT sobre un resultado agrupado y con HAVING COUNT(*)=5 no sirve.

Existe una solución que se me ocurre, pero es un poco complicada, ya que requiere tres niveles de subconsultas, y el uso de variables de usuario: Uno para crear las variables, el otro para hacer la cuenta de los tipos, y el restante (exterior) para obtener el resultado.
La idea sería mas o menos así:
Código MySQL:
Ver original
  1. SELECT id, nombre, tipo
  2.   (SELECT
  3.     IF(@TIP!= TIPO, @SUMA:=0, @SUMA) num,
  4.     IF(@TIP!= TIPO, @TIP:=TIPO, @TIP) tip,
  5.     ID,
  6.     NOMBRE,
  7.     TIPO,
  8.     @SUMA:=@SUMA+1
  9.   FROM tabla JOIN (SELECT @SUMA:=0, @TIP:=0)
  10.   ) T1
  11. WHERE num<=5
  12. ORDER BY tipo, id;

Este esquema, como está,devolvería los cinco primeros, haya o no cinco de cada tipo (ya o probé con una de mis tablas y funciona). SI lo que quieres es una cantidad específica (sólo los que tienen cinco o más tipos), la subconsulta de segundo nivel debe ser reformulada.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 23/03/2010, 08:26
indicape
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Ayuda, seleccionar sólo 5 datos BD

con las molestias que os habéis tomado y yo (cenutrio) no soy capaz de hacerlo funcionar.

me he creado otra tabla con los tipos por si se pudiese mejorar.

en la tabla tipos tengo guardados los tipos de articulos que hay.
y en la tabla principal todos los artículos.

la tabla principal tiene un campo idtipo, que está unido a la tabla tipos por el mismo campo.

lo que quiero es mostrar los 5 primero artículos de cada tipo... y me estoy volviendo loco.

lo siento, ser tan peñazo, pero no se ya por donde pillarlo.

el código que me habéis pasado antes, lo veo muy claro pero al ponerlo en mi php, no hace nada.

gracias de todas formas por vuestra aportación, es muy reconfortante recibir vuestra ayuda.

un saludo

Etiquetas: bd, seleccionar
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 03:50.