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

Como plantear si es posible esta consulta

Estas en el tema de Como plantear si es posible esta consulta en el foro de Mysql en Foros del Web. Buenas tardes, tengo un problemilla con una consulta, que llegado el punto no se si plantee mal la estructura en la base de datos para ...
  #1 (permalink)  
Antiguo 17/12/2009, 07:25
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 5 meses
Puntos: 11
Como plantear si es posible esta consulta

Buenas tardes, tengo un problemilla con una consulta, que llegado el punto no se si plantee mal la estructura en la base de datos para lo que propongo hacer.

Tengo 2 tablas (realmente mas, pero el problema me viene con estas 2):

1 tabla contiene los campos, son datos de un inmueble:
id
type
zone
suburb
city....

La segunda tabla contiene las imagenes de estos inmuebles donde:
id -> autoincremental
prop_id -> va cogiendo los valores de la id de la primera tabla, es decir de el inmueble al que pertenecen
ruta-> ruta de imagen

En la segunda tabla puede haber varios prop_id con el mismo valor, como habreis imaginado..

Aqui viene el problema:

Para mostrar el listado de los inmuebles primero, es con una sola imagen del inmueble (cualquiera que haya al azar) y una parte de los datos.

Si hago esta consulta:

SELECT t1.id,t1.zone,t1.city,t2.prop_id,t2.thumb_path FROM params_prop AS t1, images_prop AS t2 WHERE t1.id=t2.prop_id

Me saca tantos ID's de la primera tabla como imagenes tenga, cosa que es obvia visto la consulta.

Pero solo necesito una imagen en esa consulta, que me sacara una sola , y de ese modo tener una id solo por inmueble para mostrarlas.

Espero me hayan entendido , y me lo puedan solucionar. Gracias y un saludo!
  #2 (permalink)  
Antiguo 17/12/2009, 07:58
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: Como plantear si es posible esta consulta

En principio, es simple: para hacer que por propiedad te muestre una sola foto, la consulta debería agrupar por propiedad:
Código MySQL:
Ver original
  1.    t1.id,
  2.    t1.zone,
  3.    t1.city,
  4.    t2.prop_id,
  5.    t2.thumb_path
  6.    params_prop t1 INNER JOIN images_prop t2 ON t1.id = t2.prop_id
  7.    t1.id=t2.prop_id
  8. GROUP BY t1.id;
El problema es que eso te devolvería siempre la primera imagen, pero no las demás.
La solución, supongo yo, puede ser ordenar al azar en una subconsulta y luego agrupar por fuera. Algo así:

Código MySQL:
Ver original
  1.   (SELECT
  2.       t1.id,
  3.       t1.zone,
  4.       t1.city,
  5.       t2.prop_id,
  6.       t2.thumb_path
  7.   FROM
  8.       params_prop t1 INNER JOIN images_prop t2 ON t1.id = t2.prop_id
  9.   WHERE
  10.       t1.id=t2.prop_id
  11.    ORDER BY RND()) Tabla1
Que alguien me corrija si me equivoco con el ordenamiento al azar...
__________________
¿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 17/12/2009, 08:07
 
Fecha de Ingreso: octubre-2007
Mensajes: 118
Antigüedad: 16 años, 5 meses
Puntos: 11
Respuesta: Como plantear si es posible esta consulta

No sabes cuanto te agradezco la respuesta, y sí me ha servido a la perfección! :D.

Con las consultas multitablas aun me lio mucho , y las composiciones internas no las he usado mucho aun , y aun no me entero bien como funcionan del todo .

Muchisimas gracias :D
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:20.