List the name of the clients who have traveled in all the cars.
I have 4 tables, auto, driver, client and trip, the only one with foreing key is trip that acquires the driver, client and travel primary
That's how I did it but it's bad for me:
SELECT nombre
FROM cliente
INNER JOIN viaje on cliente.nro_cliente = viaje.nro_cliente
INNER JOIN auto on viaje.patente = auto.patente
GROUP BY cliente.nombre
HAVING avg(viaje.patente) = avg(auto.patente);
Ó
SELECT nombre
FROM cliente
INNER JOIN viaje on cliente.nro_cliente = viaje.nro_cliente
WHERE NOT EXISTS
(
SELECT patente
FROM auto
WHERE auto.patente = viaje.patente
);
HERE THE TABLES
create table auto
(
patente varchar(50),
modelo varchar(50),
año int,
primary key (patente)
);
create table chofer
(
nombre varchar(50),
telefono int,
nro_chofer int,
fecha_ingreso varchar(50),
primary key (nro_chofer)
);
create table cliente
(
nombre varchar(50),
domicilio varchar(50),
nro_cliente int,
localidad varchar(50),
primary key (nro_cliente)
);
create table viaje
(
patente varchar(50),
nro_chofer int,
nro_cliente int,
fecha varchar(50),
km_totales int,
tiempo_espera varchar(50),
primary key (nro_cliente, nro_chofer, patente, fecha),
foreign key (nro_cliente) references cliente (nro_cliente),
foreign key (nro_chofer) references chofer (nro_chofer),
foreign key (patente) references auto (patente)
);