Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/09/2010, 02:18
kikeking1
 
Fecha de Ingreso: junio-2009
Mensajes: 128
Antigüedad: 14 años, 10 meses
Puntos: 17
Busqueda condicional

Un saludo a la comunidad.

Tengo una consulta, que obtiene datos de varias tabla, segun la importancia de cada una las uno con "INNER JOIN" o "LEFT OUTER JOIN".

El objetivo de la consulta es obtener un piso con toda su informacion relacionada (carasteristicas, provincias, fotos, etc...).

Concretamente en la tabla de las fotos, se pueden diferenciar la foto principal y el resto. Aunque no necesariamente tiene por que haber, o bien foto principal, o bien foto alguna(puede no haber fotos tambien).

El objetivo de todo es generar un listado, donde aparezca la foto principal del piso.

Esta es la consulta:
Código PHP:
$consulta "SELECT inmuebles.modo_inmueble, inmuebles.superficie_construida_inmueble, inmuebles.dormitorios_inmueble, inmuebles.post_precio, inmuebles.id_inmueble, inmuebles.nombre_inmueble, inmuebles.descripcion_inmueble, inmuebles_subtipos.nombre_inmueble_subtipo".$_SESSION['idioma'].", inmuebles_fotos.foto_inmueble, paises.nombre_pais, provincias.nombre_provincia, areas.nombre_area FROM  inmuebles INNER JOIN inmuebles_subtipos ON (inmuebles.id_inmueble_subtipo = inmuebles_subtipos.id_inmueble_subtipo) LEFT OUTER JOIN inmuebles_fotos ON (inmuebles.id_inmueble = inmuebles_fotos.id_inmueble) INNER JOIN paises ON (inmuebles.id_pais = paises.id_pais) INNER JOIN provincias ON (inmuebles.id_provincia = provincias.id_provincia) INNER JOIN areas ON (inmuebles.id_area = areas.id_area)";   //Obtiene datos de las diferentes tablas

$complete[$link]= " inmuebles_fotos.foto_principal='si' "$link=$link+1;     //esta parte esta llena de complete como este para luego completar la busqueda en el bucle

for ($i=0;$i<$link;$i++) {  if($i==0){ $consulta.= " WHERE ".$complete[$i]; } else {$consulta.= " AND ".$complete[$i]; }}
        
$consulta.="GROUP BY inmuebles.id_inmueble ORDER BY  inmuebles_fotos.foto_principal DESC, inmuebles.precio_inmueble ASC"

El problema esta en que si uso la sentencia "inmuebles_fotos.foto_principal='si'" no me aparecen las que no tengan fotos o no tengan fotos principal.
Si la elimino, aparecen todos los pisos, con las fotos, pero evidentemente las fotos no son la principal, si no, el primer registro introducido en la bbdd (del piso concreto)

y aqui, la dura pregunta ¿Es posible indicar como condicional este campo? en el sentido de que si existe, utilice la principal, si no existe, use cualquiera