Récupérer la valeur par défaut pour la condition de requête IN
Supposons qu'une requête récupère les informations de l'utilisateur et le nombre de minutes pendant lesquelles il a été en ligne au cours d'une plage de dates spécifiée. Il utilise une requête IN pour filtrer les utilisateurs en fonction de leur identifiant. L'objectif est de renvoyer une valeur par défaut pour les identifiants qui n'ont aucun enregistrement correspondant.
Requête simplifiée :
<code class="language-sql">SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline FROM UserTable LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00' AND users.ID IN (1,2,3,4,5);</code>
Requête modifiée :
Pour obtenir les résultats souhaités, déplacez la condition de OnlineUseage vers la clause FROM. Cela garantit que la jointure gauche se comporte comme une jointure interne, filtrant les utilisateurs sans aucun enregistrement correspondant dans OnlineUseage.
<code class="language-sql">SELECT users.Name, users.ID, IFNULL(SUM(users.Minutes), 0) AS MinutesOnline FROM users LEFT JOIN OnlineUseage ON OnlineUseage.ID = users.ID AND OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00' WHERE users.ID IN (1,2,3,4,5);</code>
La requête récupérera désormais les utilisateurs avec des enregistrements correspondants dans OnlineUseage et les utilisateurs sans enregistrements correspondants, tout en définissant MinutesOnline sur la valeur par défaut de 0 pour les utilisateurs sans enregistrements correspondants.
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!