Union d'intervalles de dates
Fermé
pierre0042
Messages postés
3
Date d'inscription
lundi 26 novembre 2012
Statut
Membre
Dernière intervention
27 novembre 2012
-
26 nov. 2012 à 19:57
pierre0042 - 3 déc. 2012 à 21:07
pierre0042 - 3 déc. 2012 à 21:07
A voir également:
- Union d'intervalles de dates
- Trait d'union insécable word - Guide
- Somme si entre deux dates ✓ - Forum Excel
- S'envoyer de l'argent a soi meme western union - Forum Vos droits sur internet
- Supprimer compte western union ✓ - Forum Vos droits sur internet
- On m'envoie de l'argent par western Union et on m'envoie le reçu. Comment puis-j - Forum Vos droits sur internet
3 réponses
blux
Messages postés
26556
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
29 décembre 2024
3 319
26 nov. 2012 à 21:46
26 nov. 2012 à 21:46
Salut,
pas tout compris...
Tu peux donner un exemple ?
pas tout compris...
Tu peux donner un exemple ?
pierre0042
Messages postés
3
Date d'inscription
lundi 26 novembre 2012
Statut
Membre
Dernière intervention
27 novembre 2012
26 nov. 2012 à 22:47
26 nov. 2012 à 22:47
Oui bien sur.
Prenons comme données (id, date1, date2) :
1, 03/05/2005, 12/11/2005
2, 04/08/2005, 02/05/2006
3, 23/04/2006, 30/03/2007
4, 24/07/2007, 17/02/2008
5, 23/06/2008, 31/12/2008
l'union pour id <= 3 donne 03/05/2005, 30/03/2007
l'union pour id in (3, 4) donne 23/04/2006, 30/03/2007 et 24/07/2007, 17/02/2008
l'intersection pour id <= 2 donne 04/08/2005, 12/11/2005
l'intersection pour id >= 3 donne NULL
Prenons comme données (id, date1, date2) :
1, 03/05/2005, 12/11/2005
2, 04/08/2005, 02/05/2006
3, 23/04/2006, 30/03/2007
4, 24/07/2007, 17/02/2008
5, 23/06/2008, 31/12/2008
l'union pour id <= 3 donne 03/05/2005, 30/03/2007
l'union pour id in (3, 4) donne 23/04/2006, 30/03/2007 et 24/07/2007, 17/02/2008
l'intersection pour id <= 2 donne 04/08/2005, 12/11/2005
l'intersection pour id >= 3 donne NULL
blux
Messages postés
26556
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
29 décembre 2024
3 319
26 nov. 2012 à 22:51
26 nov. 2012 à 22:51
Ah ben là, le SQL simple ne suffira pas...
Il faudra sûrement passer par du PL/SQL (ou son équivalent en SQL Server).
Il faudra sûrement passer par du PL/SQL (ou son équivalent en SQL Server).
pierre0042
Messages postés
3
Date d'inscription
lundi 26 novembre 2012
Statut
Membre
Dernière intervention
27 novembre 2012
27 nov. 2012 à 12:16
27 nov. 2012 à 12:16
L'équivalent s'appelle Transact-SQL, mais je ne suis pas sur qu'il suffise non plus...
blux
Messages postés
26556
Date d'inscription
dimanche 26 août 2001
Statut
Modérateur
Dernière intervention
29 décembre 2024
3 319
27 nov. 2012 à 12:46
27 nov. 2012 à 12:46
S'il est vraiment procédural, il devrait te permettre ce genre d'acrobaties...
SELECT MIN(limite_basse.date1) AS minDT, MAX(limite_haute.date2) AS maxDT FROM intervalle AS limite_basse INNER JOIN intervalle AS limite_haute ON limite_basse.date2 BETWEEN limite_haute.date1 AND limite_haute.date2 WHERE limite_basse.id IN (3,4) AND limite_haute.id IN (3,4);
Et pour l'utiliser dans un autre SQL :
SELECT * FROM (SELECT MIN(limite_basse.date1) AS minDT, MAX(limite_haute.date2) AS maxDT FROM intervalle AS limite_basse INNER JOIN intervalle AS limite_haute ON limite_basse.date2 BETWEEN limite_haute.date1 AND limite_haute.date2 WHERE limite_basse.id IN (3,4) AND limite_haute.id IN (3,4)) intervalle INNER JOIN evenement ON evenement.dt BETWEEN intervalle.minDT AND intervalle.maxDT - INTERVAL 1 SECOND;