Exists

Fermé
Nouyou Messages postés 41 Date d'inscription lundi 1 décembre 2014 Statut Membre Dernière intervention 16 mars 2016 - 2 janv. 2015 à 23:17
Nouyou Messages postés 41 Date d'inscription lundi 1 décembre 2014 Statut Membre Dernière intervention 16 mars 2016 - 5 janv. 2015 à 01:32
Bonsoir ,
ceci est la requête 3 : j'ai pas compris pourquoi on a utilisé "not exists" deux fois !
Merci de me répondre
SELECT t.Personne
FROM Emprunt t
WHERE NOT EXISTS ( SELECT *
FROM Emprunt u WHERE NOT EXISTS ( SELECT *
FROM Emprunt v
WHERE v.Personne=t.Personne
AND v.Livre=u.Livre
)
)

2 réponses

Utilisateur anonyme
3 janv. 2015 à 09:07
Bonjour

Commençons par la sous-requête la plus interne :
SELECT * FROM Emprunt v WHERE v.Personne=t.Personne AND v.Livre=u.Livre 

Cette requête sort les lignes où t.Personne a emprunté le livre u.Livre
Jusque là, ça va ?
Donc il n'y a pas de ligne si t.Personne N'A PAS emprunté le livre u.Livre
donc
SELECT *
FROM Emprunt u WHERE NOT EXISTS ( SELECT *
FROM Emprunt v
WHERE v.Personne=t.Personne
AND v.Livre=u.Livre
)

sélectionne les livres que t.Personne n'A PAS empruntés
Il n'y aura pas de ligne si t.Personne a emprunté TOUS les livres
donc
WHERE NOT EXISTS SELECT * FROM Emprunt u ...

sélectionne les lignes où t.Personne a emprunté tous les livres

Faut avouer que c'est bien tordu comme manière de raisonner.
2
Nouyou Messages postés 41 Date d'inscription lundi 1 décembre 2014 Statut Membre Dernière intervention 16 mars 2016
5 janv. 2015 à 01:32
Ouii vous avez raison , Merci beaucoup
:)
0