como funciona el codigo de esta consulta¿
-
estas son las tablas.
esta es la consulta requerida y respuesta correcta.. no entiendo como funciona el codigo..
Indique el nombre y apellido del dueño, direccion y localidad de los inmuebles que aun no fueron alquilados.
respuesta.. 1
SELECT d.nombre, d.apellido, i.direccion, i.localidad
FROM inmueble AS i LEFT JOIN contrato AS c ON c.id_inmueble = i.cod_inmueble
INNER JOIN Dueño AS d ON i.cod_inmueble = d.cod_inmueble
WHERE i.cod_inmueble is null
(c.cod_inmueble puede reemplazarse por cualquier columna de contratos)
-----------------------------------------------------------------------------
respuesta 2
SELECT d.nombre, d.apellido, i.direccion, i.localidad
FROM inmueble AS i INNER JOIN dueño AS d ON i.cod_inmmueble = d.cod_inmueble
WHERE i.cod_inmueble NOT IN (SELECT id_inmueble FROM contrato)
-------------------------------------------------------------
en la 1, se que left join, me muestra los nulos del lado de la izquierda, pero no se si lo hace antes o despues de "pegar las 3 tablas" por ue hay un inner join despues... el NULL se que me muestra vacios. como pide la consigna
bueno la 2. creo que es que mas facil , ya que dice que me muestra los dueños donde (NOT IN) actua sobre una lista de valores que devolvio la subconsulta.....
bueno , espero que me corrijan, o que me digan como funciona esto... -
en el segundo, deberias considerar que algunos inmuebles fueron alquilados en el pasado, pero el contrato ya vencio por lo que en el momento no estan alquilados. pero con la consulta que tu haces va a salir que si (agregale una limitacion por fecha_fin)
en el primero lo hace antes, ya que pusiste los ON inmediatamente despues del join al que corresponden, si los hibieces puesto al final entonces seria despues
(antes) FROM a IJ b ON a.1=b.1 IJ c ON b.2=c.2
(despues) FROM a IJ b IJ c ON a.1=b.1 ON b.2=c.2
