Division impossible en SQL
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
Code:
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 )); |
Mais bon, ça ne donne évidemment rien.
Une idée ?
Merci d'avance.
Pourquoi n'utilisez-vous pas de JOIN ?
Bonjour,
Intéressant de voir votre code "old style" sans jointure claire.
Des cours se donnent encore sur la base de cette ancienne syntaxe ?
C.