Exists

Nouyou Messages postés 51 Statut Membre -  
Nouyou Messages postés 51 Statut Membre -
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

  1. Utilisateur anonyme
     
    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
  2. Nouyou Messages postés 51 Statut Membre
     
    Ouii vous avez raison , Merci beaucoup
    :)
    0