Salut tout le monde!
Dans l'approche d'un examen, j'essaie de me préparer avec des exercices.
J'essaie en vain de résoudre l'un d'eux... J'ai tenté mille tournures différentes mais je n'y parvient pas...
Voici la question:
Quels clients (nom, prénom) ayant loué ont toujours obtenu une voiture de la gamme désirée?
et la base de données associée
VEHICULE(idVehicule, modele, gamme, dateAcquisition, kilometrage, agence)
AGENCE(idAgence, ville, dateOuverture, gerant)
CLIENT(idClient, nom, prenom, datePremiereLocation, dateDerniereLocation)
LOCATION(idVehicule, idClient, gammeDemandee, dateDebut, dateFin, agenceFin)
Je suis a peu près sûr que la solution réside dans un double NOT EXISTS, donc une division.
Voici l'une de mes requêtes
Mais bon, ça ne donne évidemment rien.
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 SELECT NOM FROM CLIENT C WHERE NOT EXISTS (SELECT * FROM LOCATION L WHERE NOT EXISTS (SELECT * FROM VEHICULE V WHERE L.IDVEHICULE=V.IDVEHICULE AND C.IDCLIENT=L.IDCLIENT AND L.GAMMEDEMANDEE!=V.GAMME ));
Une idée ?
Merci d'avance.
Partager