Bonjour,
Je suis en train d'étudier les requêtes et sous-requêtes en MySQL et il y a un cas que je n'arrive pas à comprendre.
J'ai bien tenté d'écrire la requête dans le message mais l'identation ne se faisait pas. Quand cela ne veut pas, cela ne veut pas...
Voilà la table liée à la requête :
DISQUE (Code, Auteur, Titre, Style, Editeur, DateAchat)
Ce que je comprends de la requête est que :
- Pour la sous-requête la plus imbriquée, avec la mention Disque d3, elle va compter le nombre de ligne pour chaque couple formé par le tuple Auteur, Titre. Par exemple Renaud, Mistral Gagnant sera présent 10 fois et Cabrel, Petite Marie sera présent 4 fois
- ensuite on a juste au-dessus la première restriction WHERE et là je ne saisis pas. On compare l'auteur présent dans Disque d avec auteur présent dans Disque d2. Mais c'est la même table non ? Idem pour le AND qui compare les titres de d avec d2.
- >= ALL va afficher un résultat si le résultat obtenu par le test d2.Auteur = d.Auteur AND d.titre = d2.titre est supérieur au maximum de la sous-requête précédente, donc supérieur au maximum de fois que la ligne Auteur, Titre apparaisse. Si on Renaud, Mistral Gagnant compté 10 fois, comment la condition avant >= ALL peut-elle être supérieure ?
- donc même si je ne comprends pas le résultat du dernier WHERE, je renvoie qu'il comprends un max, le second SELECT (avec Disque d2) compterait donc toutes les lignes max... désolé j'ai essayé de tirer la pelote de laine mais là je suis totalement embrouillé
Ci-joint le pdf avec la requête.
DISQUE.pdf
Si quelqu'un pourrait prendre le temps de m'expliquer cette requête je lui en serai fort reconnaissant.
Merci par avance
Cordialement
Mathieu
Partager