Ver Mensaje Individual
  #5 (permalink)  
Antiguo 10/03/2009, 02:39
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 17 años
Puntos: 300
Respuesta: Select a 2 tablas o agregar campo?

Código sql:
Ver original
  1. SELECT personas.nombre, t1.fecha, casas.casa FROM personas
  2.   INNER JOIN casas ON casas.propietario = personas.id
  3.   INNER JOIN (SELECT MAX(fecha_compra) fecha, propietario FROM casas GROUP BY propietario)t1
  4.    ON t1.propietario = personas.id AND t1.fecha = casas.fecha_compra
  5. ORDER BY t1.fecha DESC LIMIT 5

1) el centro de la cebolla: busco la última fecha de cada propietario:
SELECT Max(fecha_compra) fecha, propietario FROM casas GROUP BY propietario
y nombro esa consulta con el alias t1.
2) hago un cruce mediante inner join entre la tabla personas y la tabla casas uniendo por casas.propietario y personas.id, y
3) hago un cruce también con inner join de esas tablas ya cruzadas con la consulta t1, obligando a que coincidan el máximo y el propietario (con AND) de t1 con los del cruce de esas dos tablas
4) luego ordeno descendente el resultado de ese cruce por t1.fecha y limito a los 5 primeros.