Ver Mensaje Individual
  #1 (permalink)  
Antiguo 27/03/2014, 06:41
emiliochu
 
Fecha de Ingreso: marzo-2014
Mensajes: 11
Antigüedad: 10 años, 1 mes
Puntos: 0
consulta sacando datos de tres tablas

Hola, soy nuevo en el foro, paso a redactar mi problema:
Hay tres tablas:
Tbl_servicios(id_servicio, valor,...)
tbl_servicios_inmuebles (id_servicio_inmueble, codigo_servicio, codigo_inmueble_es, fecha_expiracion_servicio,...)
inmuebles(id_inmueble,titulo,...)

Se relacionan asi:
tbl_servicios.id_servicio - tbl_servicios_inmuebles.codigo_servicio
inmuebles.id_inmueble - tbl_servicios_inmuebles.codigo_inmueble_es


Quisiera sacar todos los registros de la tabla inmuebles (tengan o no registros relacionados en la tabla tbl_servicios_inmuebles)más la suma del campo valor de la tabla tbl_servicios donde el campo fecha_expiracion_servicio sea mayor a la fecha del sistema, todo esto agrupado por id_inmueble.

La siguiente consulta funciona bien, pero solo muestra los registros de la tabla inmuebles que tienen registros relacionados en la tabla tbl_servicios_inmuebles, con lo cual no me sirve, el objetivo es ordenar todos los inmuebles por la suma de los valores de los servicios que tengan contratados.
Código SQL:
Ver original
  1. SELECT inmuebles.*, COUNT(tbl_servicios_inmuebles.id_servicio_inmueble ) AS cuenta,
  2. SUM(tbl_servicios.valor )AS suma FROM inmuebles, tbl_servicios_inmuebles, tbl_servicios
  3. WHERE tbl_provincias.id_provincia=inmuebles.provincia AND
  4. tbl_municipios.id_municipio=inmuebles.municipio AND
  5. tbl_servicios.id_servicio=tbl_servicios_inmuebles.codigo_servicio AND
  6. tbl_servicios_inmuebles.codigo_inmueble_es=inmuebles.id_inmueble AND
  7. tbl_tipos_inmuebles.id_tipo_inmueble=inmuebles.cod_tipo_inmueble AND visible=1
  8. GROUP BY id_inmueble ORDER BY ponderacion DESC, fecha_insercion, id_inmueble DESC
  9. LIMIT 0,10


Lo último que estoy probando es esta consulta, como veis no añado nada sobre la fecha pero no va. ¿Podeis echarme una manita con esto?

Código SQL:
Ver original
  1. SELECT DISTINCT inmuebles.*, COUNT(c.codigo_inmueble_es) AS cuenta FROM `inmuebles`
  2. LEFT JOIN `tbl_servicios_inmuebles` AS `c` ON `c`.`codigo_inmueble_es` = `inmuebles`.`id_inmueble` GROUP BY id_inmueble
  3. LEFT JOIN tbl_servicios ON id_servicio=codigo_servicio
  4. GROUP BY codigo_inmueble_es GROUP BY id_inmueble
[/I]