Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
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 21/12/2010, 14h51   #1
Invité de passage
 
Inscription : octobre 2003
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 9
Points : 3
Points : 3
Envoyer un message via MSN à michelsylv
Par défaut Date la plus proche

Bonjour,

j'ai quelques soucis sur une requête que je désire effectuer.

La requête étant plus complexe que ça, je vais essayer de décrire un cas semblable.

j'ai une base avec une table "calendrier" ayyant un idCalendrier.

J'ai a coté de ca une table "evenement" ayant un idEvenement, une clé étrangère de calendrier idCalendar, et une date

La date d'un évènement peut être passé ou à venir.

Le but est d'avoir une requête qui me renvoie la date de l'évènement le plus proche d'aujourd'hui pour un calendrier donné.

Actuellement j'arrive à une requête de ce type.

Code :
1
2
3
4
5
 
SELECT c.idCalendrier, MIN(ABS(DATEDIFF(e.startDate,CURRENT_DATE()))) AS ecartDate
FROM calendrier c INNER JOIN evenement e ON c.idCalendrier = e.idCalendrier
WHERE c.idCalendrier = 'XX'
GROUP BY c.idCalendrier
Mais cette requête me renvoie le nombre de jour d'écart entre aujourd'hui et l'evenement le plus proche mais pas la date de cet evenement.

J'espère avoir été suffisaement clair.

Merci d'avance pour le coup de main.

Bonne journée

++
michelsylv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 15h32   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 977
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 977
Points : 18 221
Points : 18 221
Envoyer un message via MSN à CinePhil
Essaie ceci :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT e1.idEvenement, e1.startDate
FROM evenement e1
INNER JOIN
(
    SELECT c.idCalendrier, 
        MIN(ABS(DATEDIFF(e.startDate,CURRENT_DATE()))) AS ecartDate
    FROM calendrier c 
    INNER JOIN evenement e ON c.idCalendrier = e.idCalendrier
    WHERE c.idCalendrier = 'XX'
    GROUP BY c.idCalendrier
) tmp ON tmp.idCalendrier = e1.idCalendrier
WHERE ABS(DATEDIFF(e1.startDate, CURRENT_DATE())) = tmp.ecartDate
    AND e1.idCalendrier = 'XX'
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/12/2010, 22h00   #3
Invité de passage
 
Inscription : octobre 2003
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 9
Points : 3
Points : 3
Envoyer un message via MSN à michelsylv
Merci a toi d'avoir pris le temps de regarder.

Je test ca demain matin au travail et je te tiens au courant.

Bonne soirée
michelsylv est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/12/2010, 06h57   #4
Invité de passage
 
Inscription : octobre 2003
Messages : 9
Détails du profil
Informations forums :
Inscription : octobre 2003
Messages : 9
Points : 3
Points : 3
Envoyer un message via MSN à michelsylv
Excellent !

Très grand merci à toi.

++
michelsylv 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 06h52.


 
 
 
 
Partenaires

Hébergement Web