Requete mySql

Le
Laurent
Bonjour

Je me casse les dents sur une requête MySql.

Je dois vérifier qu’une période n’est pas inclue dans une période déjà
existante.
Exemple :
DateTimeDebut = 20081001150000
DateTimeFin= 20081001170000

Dans ma base, j’ai les rubriques correspondantes :
DateDep et DateFin

Donc dans mon select, je recherche les cas suivants :
- DateTimeDebut et DateTimeFin à l’intérieur de DateDep et DateFin
- DateTimeDebut < DateDep ET DateTimeFin > DateFin
- Uniquement DateTimeDebut à l’intérieur de DateDep et DateFin
- Uniquement DateTimeFin à l’intérieur de DateDep et DateFin

Et là je me perds avec les and, or and et or, c’est la panade. :-(
Merci de toute aide
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daireaux Jean-Baptiste
Le #17689291
Laurent a écrit :
Bonjour

Je me casse les dents sur une requête MySql.

Je dois vérifier qu’une période n’est pas inclue dans une période déjà
existante.
Exemple :
DateTimeDebut = 20081001150000
DateTimeFin= 20081001170000

Dans ma base, j’ai les rubriques correspondantes :
DateDep et DateFin

Donc dans mon select, je recherche les cas suivants :
- DateTimeDebut et DateTimeFin à l’intérieur de DateDep et DateFin
- DateTimeDebut < DateDep ET DateTimeFin > DateFin
- Uniquement DateTimeDebut à l’intérieur de DateDep et DateFin
- Uniquement DateTimeFin à l’intérieur de DateDep et DateFin

Et là je me perds avec les and, or and et or, c’est la panade. :-(
Merci de toute aide





Je suppose que cherche une requête qui sorte les enregistrements qui
recouvre la période que tu contrôle, et donc si cette requête ne renvoie
aucun résultat alors ta période n'est pas déjà existante.

Partant de cette supposition tu doit tester :

NON ( DateDep>DateTimeFin OU DateFin<DateTimeDebut )

Ce qui doit être plus simple a codé en SQL.

En claire ce teste dit, je ne veux pas les enregistrements dont la
période commence après ma période à contrôler ou que la période finisse
avant ma période à contrôler.

Du coup tu récupère normalement tous les enregistrement qui sont dans ou
à cheval de ta période de contrôle.

Par contre, je suis pas terrible en SQL donc je laisse le soin à d'autre
de le formuler.

J.B.D.
Laurent
Le #17689951
Daireaux Jean-Baptiste a exprimé avec précision :
Laurent a écrit :
Bonjour

Je me casse les dents sur une requête MySql.

Je dois vérifier qu’une période n’est pas inclue dans une période déjà
existante.
Exemple :
DateTimeDebut = 20081001150000
DateTimeFin= 20081001170000

Dans ma base, j’ai les rubriques correspondantes :
DateDep et DateFin

Donc dans mon select, je recherche les cas suivants :
- DateTimeDebut et DateTimeFin à l’intérieur de DateDep et DateFin
- DateTimeDebut < DateDep ET DateTimeFin > DateFin
- Uniquement DateTimeDebut à l’intérieur de DateDep et DateFin
- Uniquement DateTimeFin à l’intérieur de DateDep et DateFin

Et là je me perds avec les and, or and et or, c’est la panade. :-(
Merci de toute aide





Je suppose que cherche une requête qui sorte les enregistrements qui recouvre
la période que tu contrôle, et donc si cette requête ne renvoie aucun
résultat alors ta période n'est pas déjà existante.

Partant de cette supposition tu doit tester :

NON ( DateDep>DateTimeFin OU DateFin<DateTimeDebut )

Ce qui doit être plus simple a codé en SQL.

En claire ce teste dit, je ne veux pas les enregistrements dont la période
commence après ma période à contrôler ou que la période finisse avant ma
période à contrôler.

Du coup tu récupère normalement tous les enregistrement qui sont dans ou à
cheval de ta période de contrôle.

Par contre, je suis pas terrible en SQL donc je laisse le soin à d'autre de
le formuler.

J.B.D.



Bonjour

Merci de ton aide. Ce qui est amusant, c'est que le fait d'avoir posé
le problème me l'a soudainement mis en évidence (les fondamentaux quoi,
toujours les fondamentaux)
Tu as juste sauf j'ai oublié de préciser que je voulais récupérer
l'enregistrement qui m'empêche d'utiliser une période pour en informer
l'utisateur ("Cet engin est déja utilisé dans etc.")
Merci encore.
Publicité
Poster une réponse
Anonyme