Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/08/2011, 17h01   #1
Membre habitué
 
Avatar de Chen norris
 
Inscription : mai 2004
Messages : 124
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2004
Messages : 124
Points : 101
Points : 101
Par défaut Recherche de plusieurs résultats sur plusieurs critères

Bonjour à tous,

Après recherche sur le forum, je n'arrive pas à vraiment trouver réponse à mon problème donc je me décide enfin à créer un nouvele discussion. Je travaille sur une table qui contient tous les jours de l'année et qui indique s'ils sont ou non ouvrés (O = ouvré, N = non ouvré) :

Code :
1
2
3
4
5
6
7
8
9
10
 
01/01/2011    N
02/01/2011    N
03/01/2011    O
04/01/2011    O
05/01/2011    O
06/01/2011    N
07/01/2011    N
08/01/2011    O
...
De cette table, je souhaite extraire une série de jours ouvrés les plus proches de plusieurs dates (supérieurs ou égaux). Je souhaite par exemple connaître les 1ers jours ouvrés après le 11/01/2011, le 28/02/2011, …

Pour une seule date, très simple, je fais quelque chose du genre :

Code :
1
2
 
SELECT min(date) FROM tableDates WHERE date >= <ma première date recherchée> AND typeJour = 'O'
Par contre, pour plusieurs dates, je n'arrive pas à trouver. J'ai essayé des choses de ce genre :

Code :
1
2
3
4
5
6
 
SELECT (SELECT min(date) FROM tableDates WHERE date >= <1ère date cherchée> AND typeJour = 'O'),
    (SELECT min(date) FROM tableDates WHERE date >= <2ème date cherchée> AND typeJour = 'O'),
    (SELECT min(date) FROM tableDates WHERE date >= <3ème date cherchée> AND typeJour = 'O'),
    ...
FROM tableDates
mais je trouve cette solution très moche et le résultat ne correspond pas véritablement à ce que j'attends. Est-ce que vous auriez une idée de requête SQL pour répondre à mon attente ? (en partant du postulat qu'une solution existe bien à mon problème)

Merci d'avance pour vos réponses.

Pour information : je suis sous DB2, je ne dois en aucun cas modifier la BDD, je ne peux pas utiliser de procédure stockée.
__________________
Chen norris
C/C++, C#, Java, PHP & SQL coder
Web developer
Chen norris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 17h09   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
bonjour,

Essayez ceci :
Code :
1
2
3
4
5
6
 
SELECT min(date) FROM tableDates WHERE date >= <ma première date recherchée> AND typeJour = 'O'
UNION ALL
SELECT min(date) FROM tableDates WHERE date >= <ma 2eme date recherchée> AND typeJour = 'O'
UNION ALL
...
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/08/2011, 17h18   #3
Membre habitué
 
Avatar de Chen norris
 
Inscription : mai 2004
Messages : 124
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2004
Messages : 124
Points : 101
Points : 101
Tout d'abord, merci pour la rapidité de la réponse.

Je viens de tester et le résultat est vraiment très très bon niveau temps de réponse. Plus qu'à convertir tout ça en HQL maintenant

Encore merci pour cette réponse qui correspond parfaitement à ce que je recherchais.
__________________
Chen norris
C/C++, C#, Java, PHP & SQL coder
Web developer
Chen norris est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h02.


 
 
 
 
Partenaires

Hébergement Web