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

Como Puedo hacer este select

Estas en el tema de Como Puedo hacer este select en el foro de Mysql en Foros del Web. Tengo una tabla Publicaciones: Código HTML: _______________ |Publicaciones | |______________| |id_publicacion| | titulo | |______________| Y otra imagenes Código HTML: __________________ | Imagenes | |________________| ...
  #1 (permalink)  
Antiguo 06/11/2009, 06:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 4 meses
Puntos: 6
Como Puedo hacer este select

Tengo una tabla Publicaciones:
Código HTML:
_______________  
|Publicaciones |
|______________|
|id_publicacion|
| titulo       |
|______________|
Y otra imagenes

Código HTML:
__________________  
|    Imagenes    |
|________________|
| id_imagen      |
| id_publicacion |
| url_imagen     |
|________________|
Una Publicación puede tener muchas imágenes.
Ahora existe la posibilidad de hacer una llamada a la BD en la cual llame todas las publicaciones con su imagen respectiva, pero que no me tire todas las imágenes de una publicación sino que solo una imagen no varias; trate de hacerlo, pero no me resulta:

Código:
"SELECT 
	DISTINCT(pub.id_publicacion),
	o.url_imagen				
FROM 
         publicaciones pub, 
	 imagenes o
WHERE
	pub.id_publicacion = o.id_publicacion	
";
__________________
Inspiracion
  #2 (permalink)  
Antiguo 06/11/2009, 06:15
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Como Puedo hacer este select

Gracias de antemano (Pase a escribir esta respuesta disculpen)
__________________
Inspiracion

Última edición por albertcito; 06/11/2009 a las 06:16 Razón: Error :S
  #3 (permalink)  
Antiguo 06/11/2009, 06:44
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: Como Puedo hacer este select

Es más simple de lograr con un GROUP BY, el cual realiza, al menos en MySQL, una "acumulación" de los campos que no se declaran en el GROUP BY. De esa forma, devolverá solamente un registro por cada id_publicación distinto, y sólo la primer imagen de la lista.
Para hacer que muestre la primer imagen de un orden determinado, por ejemplo la última ingresada y no la primera, se debe usar algún campo o campos adicionales en un ORDER BY para lograr que la primera imagen del grupo sea la deseada.
Código:
SELECT 
   pub.id_publicacion,
   o.url_imagen
FROM 
   publicaciones pub INNER JOIN imagenes o
   ON pub.id_publicacion = o.id_publicacion
GROUP BY id_publicacion;
Otro tip: Las igualaciones de tipo pub.id_publicacion = o.id_publicacion en un JOIN no deben ir en el WHERE sino en el FROM usando la cláusula ON. Esto es así, además de razones de sintaxis, porque eso le permite al MySQL optimizar internamente la consulta; en cambio si lo pones en el WHERE, no es optimizable.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 07/11/2009, 07:23
 
Fecha de Ingreso: diciembre-2007
Mensajes: 169
Antigüedad: 16 años, 4 meses
Puntos: 6
Respuesta: Como Puedo hacer este select

Muchas gracias gnzsoloyo y disculpa el traso en responder, soy más o menos nuev en esto de BD

Saludos.
__________________
Inspiracion
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 15:27.