Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/03/2009, 01:57
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?

Cita:
-----personas-----
id
nombre
sexo
edad
-----------------------
-------casas--------
id
casa
propietario
fecha_compra
------------------------


supongamos que mi tabla personas tiene 20 registros, la de casa contiene 200, y cada persona puede tener varias casas, lo que deseo hacer es que me muestre 5 personas con la ultima casa que compraron ordenado por fecha_compra descendientemente y los campos a mostrar serian nombre casa y fecha_compra :
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

explicación: primero elegimos la última fecha de cada propietario. Luego un inner join entre todos los datos con las dos tablas para poder sacar los datos.

Esto funcionará, creo (no lo he probado), si propietario de la tabla casas es un numero relacionado con el primary key de la tabla personas, id. Si lo que tienes escrito es el nombre en propietario, deberías hacer la relación con personas.nombre.