Ver Mensaje Individual
  #2 (permalink)  
Antiguo 13/07/2012, 14:25
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: como funcionan el codigo de estas consultas

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
  1.     d.nombre,
  2.     d.apellido,
  3.     i.direccion,
  4.     i.localidad
  5.     Dueño D
  6.     INNER JOIN inmueble I ON d.cod_inmueble = i.cod_inmueble
  7.     LEFT JOIN contrato C ON I.id_inmueble = C.cod_inmueble
  8.     C.cod_inmueble IS NULL;
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.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Última edición por gnzsoloyo; 14/07/2012 a las 07:49