Supposons qu'il y ait deux tables :
Question :
Comment identifier les voitures qui ont réussi tous les tests (A,B,C,D) à partir du tableau passedtest ?
Limitations de l'instruction IN :
L'utilisation d'une instruction IN pour faire correspondre les lignes contenant une liste de tests peut renvoyer des voitures qui ne réussissent qu'un sous-ensemble de ces tests.
Solution : Regrouper et compter différents types de tests
Cette solution utilise COUNT() et la clause HAVING :
<code class="language-sql">SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4;</code>
Cette requête regroupe les lignes par nom de voiture et compte le nombre de valeurs de type de test distinctes. Une voiture avec un score de 4 a réussi les quatre tests.
Conseils supplémentaires :
Pour récupérer les données de la table cars en fonction de l'ensemble de résultats, utilisez cette requête étendue :
<code class="language-sql">SELECT * FROM cars WHERE carname IN ( SELECT carname FROM PassedTest GROUP BY carname HAVING COUNT(DISTINCT testtype) = 4 );</code>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!