Grupo 4 ejercicio 1.3
/*
a) Por cada localidad donde hayan ocurrido infracciones entre los años 1988 y 2000 indicar el código
postal de la localidad, el nombre de la localidad, el nombre de la provincia.
*/
SELECT DISTINCT I.codPostal, L.localidad, P.provincia FROM infraccion I, localidad L, provincia P WHERE
I.fecha BETWEEN '1987-12-31' AND '2001-01-01' AND
I.codPostal = L.codPostal AND
L.idProvincia = P.idProvincia;
/*
b) La lista de todas las infracciones cometidas en el año 1992, incluyendo el numero de infracción, la
descripción del tipo de infracción, el importe que corresponde pagar, la patente del vehículo
infractor y el nombre del chofer.
*/
SELECT I.idInfraccion, TI.descripcion, TI.importe, I.patente,P.nombre FROM infraccion I, tipoInfraccion TI, persona P WHERE
I.fecha BETWEEN '1991-12-31' AND '1993-01-01' AND
I.tipoInfraccion = TI.tipoInfraccion AND
I.dni = P.dni;
/*
c) El nombre de las personas que adeuden infracciones anteriores al ano 1992 y que después de esa
fecha, bien no hayan cometido otras infracciones, o si las cometieron, las han pagado a todas.
*/
SELECT P.nombre FROM persona P WHERE
P.dni in (SELECT dni FROM infraccion WHERE
fecha < '1992-01-01' AND
NOT pagada) AND
P.dni not in (SELECT dni FROM infraccion WHERE
fecha > '1991-12-31' AND
NOT pagada);
/*
d) Los vehículos con los que se hayan cometido infracciones que se adeudan y que no cuenten con
la valuación correspondiente
*/
SELECT I.patente FROM infraccion I, vehiculo V WHERE
NOT I.pagada AND
I.patente = V.patente AND
(V.idModelo,V.anio) NOT IN(select idModelo,anio FROM valuacion);
/*
e) Para aquellas infracciones en las que el dueño del vehículo involucrado en la misma difiera del
chofer, listar el número de infracción, la patente del vehículo infractor y el nombre del propietario
del vehículo.
*/
SELECT I.idInfraccion, I.patente, P.nombre FROM infraccion I, vehiculo V, persona P WHERE
I.patente = V.patente AND
I.dni != V.dni AND
V.dni = P.dni;
/*
f) Para aquellas personas que han cometido dos infracciones, el mismo día en diferentes localidades
listar su nombre y los números de las infracciones.
*/
SELECT I1.idInfraccion, I2.idInfraccion, P.nombre FROM infraccion I1,infraccion I2, persona P WHERE
I1.dni = I2.dni AND
I1.fecha = I2.fecha AND
I1.codPostal != I2.codPostal AND
I1.idInfraccion < I2.idInfraccion AND
I1.dni=P.dni;