Maison >base de données >tutoriel mysql >Comment trouver des intervalles de temps qui se chevauchent entre deux tables SQL ?

Comment trouver des intervalles de temps qui se chevauchent entre deux tables SQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-03 21:44:43142parcourir

How to Find Overlapping Time Intervals Between Two SQL Tables?

Recherche d'intervalles de temps qui se chevauchent entre deux tables en SQL

Dans une base de données comportant deux tables contenant des champs d'heure de début et de fin, il est souvent nécessaire pour identifier les lignes où les intervalles de temps se croisent. Cette question fournit une solution pour trouver efficacement de tels chevauchements dans SQL Server 2005 à l'aide d'une clause WHERE.

Solution :

La requête suivante peut être utilisée pour trouver le temps de chevauchement intervalles entre les lignes du tableau 1 et table2 :

SELECT * 
FROM table1,table2 
WHERE table2.start <= table1.end 
AND (table2.end IS NULL OR table2.end >= table1.start)

Explication :

La requête utilise une condition JOIN pour comparer les intervalles de temps des deux tables. La clause WHERE emploie deux conditions :

  1. table2.start <= table1.end garantit que l'heure de début de la ligne 2 (table2) se produit avant ou en même temps que l'heure de fin de la ligne. 1 (table1).
  2. (table2.end IS NULL OR table2.end >= table1.start) gère le cas où l'heure de fin dans la table2 est NULL ou se produit à ou après l’heure de début dans la table1. Cette condition garantit que les intervalles qui se chevauchent sont capturés.

Cette clause WHERE détermine efficacement si l'intervalle de temps de la ligne 2 croise l'intervalle de temps de la ligne 1. En utilisant une jointure, la requête récupère efficacement les lignes. des deux tableaux où de tels chevauchements existent.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn