Identifier efficacement les intervalles de temps qui se chevauchent dans SQL
Dans un scénario où vous disposez de deux tables comportant des champs d'heure de début et de fin, il devient nécessaire de localisez les lignes du deuxième tableau qui croisent les intervalles de temps de chaque ligne du premier tableau. Pour aborder cette tâche en SQL, envisagez les stratégies suivantes :
Approche de la clause SQL WHERE :
Pour SQL Server 2005, une solution efficace peut être formulée à l'aide d'un WHERE clause :
SELECT * FROM table1,table2 WHERE table2.start <= table1.end AND (table2.end IS NULL OR table2.end >= table1.start)
Dans cette requête, la condition table2.start <= table1.end garantit que l'heure de début d'une ligne dans le tableau2 se trouve dans l'intervalle défini par la ligne du tableau1. La condition (table2.end IS NULL OR table2.end >= table1.start) gère le cas où l'heure de fin dans la table2 est NULL, permettant des intervalles ouverts.
Cette approche exploite les capacités intrinsèques de bases de données SQL pour optimiser l'opération de recherche, en minimisant la consommation de ressources et le temps d'exécution des requêtes.
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!