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

problema para unir dos tablas, distinct no me funciona

Estas en el tema de problema para unir dos tablas, distinct no me funciona en el foro de Mysql en Foros del Web. Hola a todos, quiero hacer una consulta 'aparentemente simple' pero no doy con el tema. Tengo dos tablas "usuarios" y "fotos", simplemente quiero mostrar a ...
  #1 (permalink)  
Antiguo 09/01/2012, 04:12
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
problema para unir dos tablas, distinct no me funciona

Hola a todos, quiero hacer una consulta 'aparentemente simple' pero no doy con el tema.

Tengo dos tablas "usuarios" y "fotos", simplemente quiero mostrar a todos los usuarios con su foto al lado. El unico problema que veo es que cada usuario tiene asignadas varias fotos y no se como decirle que me coja solo una......


He probado con esto, y me lo muestra, pero claro me muestra todas las fotos!

Cita:

SELECT DISTINCT a.id_album, a.titulo, i.titulo

FROM album a, imagenes i

WHERE a.id_album = i.id_album
Me muestra los usuarios tantas veces como fotos le corresponden.... y yo quiero que simplemente salga:

usuario 1 - foto

usuario 2 - foto

¿como puedo hacerlo? He probado con union , union all, INNER JOIN .... y no lo consigo... Alguien puede ayudarme? Muchas gracias por vuestro tiempo...
  #2 (permalink)  
Antiguo 09/01/2012, 04:22
Avatar de TheScript  
Fecha de Ingreso: septiembre-2011
Ubicación: Spain
Mensajes: 164
Antigüedad: 12 años, 7 meses
Puntos: 30
Respuesta: problema para unir dos tablas, distinct no me funciona

Hola a todos, me autorespondo yo misma para decir que ya he dado con la solucion, quizas se pueda hacer de otra manera pero bueno, de momento me vale.

Cita:


SELECT DISTINCT a.id_album, a.titulo, i.titulo

FROM album a, imagenes i

WHERE a.id_album = i.id_album

GROUP BY a.id_album
con un GROUP BY.....

Un saludo a todos, y perdon por las molestias.
  #3 (permalink)  
Antiguo 09/01/2012, 06:01
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, 4 meses
Puntos: 2658
Respuesta: problema para unir dos tablas, distinct no me funciona

Esa sería la forma estadar de hacerlo. No tiene defectos formales, pero si tienes las tablas muy cargadas, no es la más optimizada.
Ese sería el caso de:
Código MySQL:
Ver original
  1.     a.id_album, a.titulo, i.titulo
  2. FROM album a INNER JOIN imagenes i ON a.id_album = i.id_album
  3. ORDER BY a.id_album, a.titulo, i.titulo
El uso de la coma aparece en los manuales, pero cuando pones la condición en el WHERE obligas a MySQL a leer todas las tablas, completas, para recién allí hacer la selección.
INNER JOIN, en cambio, va descartando lo que no coincide a medida que lee las tablas. No requiere una neuva selección, ni lee todo.
Por otro lado, ese GROUP BY es peligroso, porque en esas devolverá la primera aparición de cada album, sin importarle las repeticiones de titulos que existan. Simpemente devolvera un único registro por cada id_album que encuentre. Eso puede no ser lo que quieres. En tu caso, ese GROUP BY es superfluo, porque el DISTINCT ya evitará repeticiones.
Además, tengo la impresión de que estás confundiendo el GROUP BY con el ORDER BY...
¿Lo que quieres es que aquellos registros del mismo id_album aparezcan juntos?
Eso es ORDER BY, no GROUP BY
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: distinct, join, select, tabla, tablas
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 00:50.