Esas tablas tienen un error de diseño. Un dueño debería serlo de diversos inmuebles, al menos eso es lo que se espera, por lo que lo que corresponde es poner el ID del dueño en la tabla de Inmueble, pero no al revés.
Para que se entienda mejor dónde va la FK: El inmueble
pertenece al dueño. El dueño no
pertenece al inmueble, sino que
posee un inmueble.
La semántica es distinta.
Eso surge desde el momento en que la el inmueble depende de la persona. No existe por si mismo en el sistema y por tanto hereda la FK de la persona.
Incluso más: Un inmueble puede pertenecer a varios dueños, por lo que correspondería que haya una tabla dueño_inmueble que relacione ambas entidades.
Sin resolver ese defecto, no se puede hacer una consulta consistente.
Lo que quiero que te quede claro es que según ese modelo, un Dueño puede serlo
solo de un ùnico inmueble, y no puede tener más que un inmueble.
Por otro lado, LEFT JOIN devuelve
los registros de la tabla izquierda aunque no coincidan con los de la derecha. Los nulos aparecen en la segunda tabla, no en la primera. Estás interpretando exactamente al revés, y la consulta está al revés.
Considerando el diseño que has puesto, la consulta debería ser:
Código MySQL:
Ver original d.nombre,
d.apellido,
i.direccion,
i.localidad
Dueño D
INNER JOIN inmueble I
ON d.cod_inmueble
= i.cod_inmueble
LEFT JOIN contrato C
ON I.id_inmueble
= C.cod_inmueble
Y un anota en especial, a pesar de lo que has puesto, no puedes reemplazar C.cod_inmueble con I.cod_inmueble, porque lo que es nulo es la existencia de contratos, cuando no hay contratos sobre el inmueble. Peor el inmueble
siempre tendrá un dueño, por lo que en su tabla siempre habrá alguno.
No se si el modelo de tablas y relaciones que pones es tuyo o es una consigna dada. Si es una consigna de un TP, es habitual que sean algo irracionales (truco pedagógico), por lo que hay que atenerse a lo que diga ella.