Bonjour,
Dans le cadre d'un de mes développements, je dois valider la validité d'un élément en base de donnée en vérifiant si celui-ci existe pour une plage de valeur donnée.
Par exemple :
Dans une table ayant les colonnes suivantes (code, debut, fin), je vais avoir le contenu suivant :
Et je dois valider si A/B/C est disponible pour un plage (15, 35) par exemple. J'ai une requête un peu idiote qui réalise un min et un max. Ce qui me permet de dégrossir la majorité des cas. Mais, il est possible que je tombe dans le cas représenté par le cas B dans mon exemple. A savoir une plage de debut/fin discontinue et valide pour ma requête.
Code x : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ('A', 10, 20) ('A', 21, 30) ('A', 31, 40) ('B', 10, 20) ('B', 31, 40) ('C', 10, 40)
Ma requête en l'état :
Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part select * from maTable where code = 'B' group by code having min(debut) < 15 and max(fin) > 35;
Il doit y avoir moyen de faire quelque chose de propre avec des jointures de tables non ?
Cordialement,
Patrick Kolodziejczyk.
Note : Je pourrai le faire dans le code de mon application, mais le langage utilisé est plus que rebutant. (Au point où je préfère le faire en SQL !)
Edit : Je suppose qu'il faudrait utiliser un connect by, mais ma base de donnée tourne en boucle sur mon test =/
Partager