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

Mostrar sólo un registro de varios repetidos

Estas en el tema de Mostrar sólo un registro de varios repetidos en el foro de Bases de Datos General en Foros del Web. Hola, mi problema es el siguiente: Tengo dos tablas, "Ficha" y "Fotos". La primera tabla, entre otros, tiene los campos idreferencia, referencia. La segunda tabla ...
  #1 (permalink)  
Antiguo 11/02/2008, 06:55
 
Fecha de Ingreso: julio-2006
Mensajes: 10
Antigüedad: 17 años, 9 meses
Puntos: 0
Mostrar sólo un registro de varios repetidos

Hola, mi problema es el siguiente:

Tengo dos tablas, "Ficha" y "Fotos".
La primera tabla, entre otros, tiene los campos idreferencia, referencia.
La segunda tabla tiene los campos, idfoto, idreferencia, nombrefoto.
Están relacionadas de manera que una ficha puede tener multiples fotos. Cuando muestro una ficha me salen todas las fotos, pero, necesito que al mostrar un listado de esas fichas sólo me muestre la primera foto de cada ficha.
Me podeis dar una idea de como hacer esta consulta?
He probado con distinct, pero no me funciona.
Tal vez no sea el planteamiento adecuado. Alguna idea?
Gracias
  #2 (permalink)  
Antiguo 11/02/2008, 10:39
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Re: Mostrar sólo un registro de varios repetidos

si solo quieres mostrar la primera foto un distinct no es correcto.

Tendras que utilizar subconsultas donde saques la foto con idfoto menor por cada ficha.

Salu2
  #3 (permalink)  
Antiguo 11/02/2008, 12:38
 
Fecha de Ingreso: julio-2006
Mensajes: 10
Antigüedad: 17 años, 9 meses
Puntos: 0
Mensaje Re: Mostrar sólo un registro de varios repetidos

Gracias por tu rápida respuesta.

Creo que entiendo tu explicación pero no logró hacer bien la consulta.
No logro ver como sacar la foto con idfoto menor por cada ficha.
¿Sería la idfoto o idreferencia que es el comun en las 2 tablas?
¿Sería mucho pedir que pusieras un ejemplo?
Gracias de antemano
  #4 (permalink)  
Antiguo 11/02/2008, 12:57
 
Fecha de Ingreso: enero-2008
Mensajes: 614
Antigüedad: 16 años, 3 meses
Puntos: 57
Re: Mostrar sólo un registro de varios repetidos

Si estas utilizando SQL server podrias utilizar:

select top 1 * From ficha, fotos where ficha.idreferencia = fotos.idreferencia

O si utilizas oracle creo que se podria utilizar:

select * from ficha, fotos where ficha.idreferencia = fotos.idreferencia and rownum < 2

Desconozco si alguna de esas funciones funcionaria en mySQL
  #5 (permalink)  
Antiguo 11/02/2008, 13:11
 
Fecha de Ingreso: julio-2006
Mensajes: 10
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: Mostrar sólo un registro de varios repetidos

Hola posman,

Con esa instrucción saco el primer registro solamente.
Lo que necesito es listar todos los registros de la tabla ficha, pero que no me los duplique por el hecho de tener más de una foto por ficha.
Es decir,
Tabla ficha:
idreferencia - referencia
1 a
2 b
3 c
Tabla fotos:
idfoto - idreferencia - nombrefoto
1 1 F1
2 2 F2
3 1 F3
4 3 F4

Necesito sacar un listado con los resultados

idreferencia - referencia - idfoto - nombrefoto
1 a 1 F1
2 b 2 F2
3 c 4 F4

En este caso serían 3 registros en vez de cuatro porque no debe mostrar la idreferencia repetida.

Gracias
  #6 (permalink)  
Antiguo 12/02/2008, 04:08
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Re: Mostrar sólo un registro de varios repetidos

select ficha.id_referencia, ficha.referencia, foo.id_foto, foo.nombre_foto
from ficha
join fotos using (id_referencia)
where id_foto in (select min(id_foto) from fotos group by id_referencia)

Salu2
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 23:28.