J'ai un groupe d'utilisateurs, dont chacun a beaucoup de messages. Schéma:requête SQL au moins un de quelque chose
Users: id
Posts: user_id, rating
Comment puis-je trouver tous les utilisateurs qui ont au moins un poste avec une note ci-dessus, disons, 10?
Je ne suis pas sûr si je devrais utiliser une sous-requête pour cela, ou s'il y a un moyen plus facile.
Merci!
Pouvez-vous m'expliquer cela. La requête interne va recevoir n'importe quel nombre de lignes NULL. Alors, EXISTS le résume en vrai ou faux, donc ne va-t-il pas obtenir tous les utilisateurs, ou aucun? – ash
@Jasie: EXISTS ne se soucie pas de l'instruction SELECT en son sein - vous pourriez remplacer NULL par 1/0, ce qui devrait entraîner une erreur mathématique pour la division par zéro ... Mais ce ne sera pas le cas, car EXISTS ne concerne que avec le filtrage dans la clause WHERE. La corrélation (le 'WHERE p.user_id = u.id') est pourquoi on appelle cela une sous-requête corrélée, et retournera seulement les lignes de la table USERS où les valeurs d'id correspondent, en plus de la comparaison de notation. –
@Jasie: EXISTS est également plus rapide, selon la situation, car il retourne vrai dès que les critères sont remplis - les doublons n'ont pas d'importance. –