Obtenir la valeur par défaut pour la valeur de requête IN
Supposons que vous ayez une requête qui utilise une requête IN pour récupérer les données des utilisateurs qui étaient en ligne au cours d'une plage de dates spécifique. Toutefois, vous souhaitez inclure une valeur par défaut dans la condition IN pour les ID utilisateur qui ne correspondent pas à la condition de plage de dates.
Question
La requête simplifiée ci-dessous utilise une jointure gauche pour faire correspondre l'utilisation en ligne aux identifiants des utilisateurs. Cependant, il renvoie uniquement les enregistrements correspondant aux critères de plage de dates.
<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';</code>
Solution
Pour inclure une valeur par défaut, placez la condition de plage de dates dans la clause FROM :
<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';</code>
Cela garantit que tous les ID utilisateur sont inclus dans la condition de récupération IN, qu'ils correspondent ou non à la condition de plage de dates. IFNULL est utilisé pour fournir une valeur par défaut de 0 aux utilisateurs sans données d'utilisation en ligne.
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!